Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
100 vistas7 páginas

Apuntadores

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 7

INSTITUTO POLITECNICO NACIONA L

ESCUELA SUPERIOR DE INGENIERIA


MECANICA Y ELECTRICA

ESIME-CULHUACAN

FUNDAMENTOS DE PROGRAMACION
(Apuntadores)
UNIDAD 3

ALUMNO:
MALDONADO BRAVO IAN YAEL EDUARDO

GRUPO: 1MV25

PROFESOR:
AGUILAR MARURI HUGO ENRIQUE
Nombre: MALDONADO BRAVO IAN YAEL EDUARDO Grupo: 1MV25

Unidad IV Estructura de datos

Apuntadores

Realizar una investigación sobre los siguientes temas:


1. Apuntadores
2. Tipos de apuntadores
3. Operaciones con apuntadores
4. Relación de los apuntadores con los arreglos

Además, el trabajo deberá contener un ejemplo implementando los apuntadores


con un arreglo unidimensional o bidimensional.

1. Apuntadores
Apuntadores también llamados punteros, son variables que contienen la dirección de
la memoria de una variable dinámica donde se podrá almacenar un valor.

Declaración:

Primero se especifica el tipo de dato al que apunta, el operador (*), y el nombre del
apuntador.

 Sintaxis
<tipo> *<identificador>;

Ejemplo: int *pointE;

Estos solo pueden apuntar a objetos de un tipo determinado.

Otras formas de colocar (*) son:

 <tipo>* <identificador>
 <tipo>* <identificador>
Cabe aclarar que en algunos casos el poner el asterisco en las 3 diferentes formas,
puede que indicar error y más si se declaran varios objetos en la misma línea.

 int* x, y;
En este caso, x es un puntero a int, pero no es más que un objeto de tipo int. Colocar
el asterisco junto al tipo puede que indique más que estamos declarando un puntero,
pero debemos de tener en cuenta que sólo afecta al primer objeto declarado, si
quisiéramos declarar ambos objetos como punteros a int tendremos que hacerlo de
otra manera.

 int* x, *y;
 int *x, *y;
 int* x;
int* y;
Obtener punteros a objetos:

Los punteros apuntan a objetos, por lo tanto, lo primero que tenemos que saber hacer
con nuestros punteros es asignarles direcciones de memoria válidas de objetos.

Para poder averiguar la dirección de memoria de cualquier objeto se usara el


operador dirección (&)-(dirección de).

Ejemplo:

 int A;
 Int *pA
 pA= &A;
pA es un puntero a int que apunta a la dirección donde se almacena el valor del
entero A.

Objeto apuntado por un puntero:

La operación contraria es obtener el objeto referenciado por un puntero, con el fin de


manipularlo, ya sea modificando su valor u obteniendo el valor actual.

Para manipular el objeto apuntado se utilizará el operador de dirección: (*).

Ejemplo:

 int *pEntero;
 int x = 10;
 int y;
 pEntero = &:y;
 *pEntero = x;// (1)

En (1) asignamos al objeto apuntado por pEntero en valor del objeto x. Como pEntero
apunta al objeto y, esta sentencia equivale (según la secuencia del programa), a
asignar a y el valor de x.
2. Tipos de apuntadores
Hay dos tipos de apuntadores:

 Apuntadores a variables: El apuntador almacena la dirección en memoria de


dicha variable
 Apuntadores a funciones: El apuntador almacena la dirección en memoria del
inicio del código de dicha función.
 Apuntadores genéricos: Son tipo void, pueden apuntar a otro tipo de datos. Es
una operación delicada que depende del tipo de compilador. Es conveniente
emplear el “casting” para la conversión, aunque no todas las conversiones
están permitidas.
void *generico;

 Apuntadores nulos: El valor cero se utiliza para indicar que ha ocurrido algún
error (es decir, que alguna operación no se ha podido realizar)
int *p = NULL; //int *p=0;

 Apuntadores constantes: Una declaración de apuntador precedida de const


hace que el objeto apuntado sea una constante.
const char *p = “Valladolid”;
p[0] = ‘f’ //error. La cadena apuntada por p es constante.
p = “Púlsela” //OK. p apunta a otra cadena

 Apuntadores a Apuntadores: Permite manejar arreglos de múltiples


dimensiones con notaciones del tipo ***mat, de múltiple en dirección que
pueden generar problemas si el tratamiento no es el adecuado.
int **apuntador; //apuntador a apuntador a un objeto int.

 Apuntadores a datos complejos: Se pueden declara APUNTADORES a datos


definidos por el usuario (typedef()), a datos struct, a funciones, como
argumentos de funciones.

3. Operaciones con apuntadores


Asignación

En este caso se adina un puntero a otro, esto hara que los apunten a la misma
dirección memoria:

 int *q, *p;


 int a;
 q = &a; /* q apunta a la dirección de a */
 p = q; /* p apunta al mismo sitio, es decir,
a la dirección de a */
Operaciones aritméticas

En este tipo de operaciones se puede, suma, resta, preincremento, postincremento,


predecremento y postdecremento. valores enteros a un puntero de modo que el
puntero pueda apuntar a la memoria que se encuentre antes o después de la
dirección asignada. Además, podemos combinar los operadores de suma y resta con
los de asignación: (+= y -=).

 int c[10] = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55};
 int *pt;
 pt = c;
 pt++;
 pt += 5;
 pt -= 3;
 pt--;

4. Relación de los apuntadores con los arreglos


Existe una equivalencia entre arrays y punteros, un ejemplo es cuando declaramos un
array estamos haciendo varias cosas a la vez:

 Declaramos un puntero del mismo tipo que los elementos del array.
 Reservamos memoria para todos los elementos del array. Los elementos de un
array se almacenan internamente en la memoria del ordenador en posiciones
consecutivas.
 Se inicializa el puntero de modo que apunte al primer elemento del array.
REFERENCIAS

Salvador Pozo. (2009). Punteros 1. 16/12/2020, de Con Clase Sitio web:


http://conclase.net/c/curso/cap12
Anónimo. (2010). Apuntadores. 16/12/2020, de Tabla de Contenidos Sitio
web: http://agora.pucp.edu.pe/inf2170681/8.htm
LIC. JAVIER JIMÉNEZ PACHECO. (2012). APUNTADORES . 16/12/2020, de
Propietario Sitio web:
http://azul2.bnct.ipn.mx/academia/apuntes/apuntadores.pdf
Ricardo. (2016). Apuntadores.. 16/12/2020, de Blogger Sitio web:
http://programacionestructuradarrr.blogspot.com/2016/09/apuntadores
.html

EJEMPLO
/*
Escuela: Instituto Politécnico Nacional - IPN
Plantel: ESIME - Culhuacan
Carrera: Ingeniería Mecánica
Materia: Fundamentos de Programación
Grupo: 1MV25
Nombre: Maldonado Bravo Ian Yael Eduardo
Fecha de creación: 19 de diciembre de 2020
*/
/*
Nombre de la Práctica: Estructura de datos

Arreglos unidimensionales.

Realizar un programa que cree un arreglo de tipo entero, solicite al usuario los valores, llene
dicho arreglo,
ordene los valores de mayor a menor y por último imprima los valores ya ordenados.
*/

#include <stdio.h>
#include <stdlib.h>

main() {
int *m, n, i, j, valores[50], aux;
system("color 1E");
printf("Ingrese la Cantidad de Nuemeros a Ingresar: ");
scanf("%i",&n);
m=&n;
printf("El valor esta guardado en: %i \n ",m);

for (i = 1; i <= *m; i++) {


printf("\nvalores[%i] = ",i);
scanf("%i",&valores[i]);

for (i = 1; i <= *m - 1; i++) {


for (j = 1; j <= *m - 1; j++) {
if (valores[j] > valores[j + 1]) {
aux = valores[j];
valores[j] = valores[j + 1];
valores[j + 1] = aux;
}
}
}
printf ("De mayor a menor: ");
for (i = *m; i >= 1; i--) {
printf ("\n%i ",valores[i]);
}

También podría gustarte