Apuntadores en C
7. Apuntadores
7.1 Declaración e inicialización de variables de apuntador. 7.2 Operadores de los apuntadores 7.3 Arreglos de apuntadores 7.4 Apuntadores a funciones
7.1 Declaración e inicialización de variables de apuntador. (1)
• Un apuntador ( Pointer) provee una forma de acceder una variable (o una clase de dato) sin referirse directamente a la variable misma. Elmecanismo empleado para el acceso es la dirección, en memoria, de la variable, no su nombre.
7.1 Declaración ... (2)
Razones del uso de apuntadores Regresar más de un valor de una función Pasar arreglos y cadenas más convenientemente entre funciones Manipular arreglos más facilmente Crear estructuras complejas de datos Comunicar información acerca de la memoria
7.1 Declaración ... (3)
•Una constante apuntador es una dirección • Una variable apuntador es un lugar para el almacenamiento de direcciones
7.1 Declaración ... (4)
Para usar un apuntador es necesario indicar al compilador: Que se está declarando un apuntador. Para ello se antepone el asterisco ( * )
El tipo de dato del elemento al cual el apuntador señalará.
7.1 Declaración ... (5)
• Ejemplo. Declaraciónde apuntadadores a datos de tipo entero y datos de tipo punto flotante:
int *px , *py ; float *pcuenta , *psaldo ;
7.1 Declaración ... (6)
int *px ;
el apuntador señalará a una variable de tipo entero Indica que la variable es un apuntador
Nombre de la variable apuntador
7.2 Operadores de los apuntadores. (1)
• En una declaración de un apuntador se emplea el * para denotar sunaturaleza • En un bloque de código el * representa al operador de indirección. Este permite acceder el valor contenido en la dirección de memoria señalada por el apuntador.
7.2 Operadores de los apuntadores. (1)
• Es posible ejecutar sumas + y restas – a apuntadores con el fin de realizar desplazamientos relativos en memoria.
7.2 Operadores ... (2) *
En una declaración Indica que lavariable es de “tipo apuntador”
int *px ;
En otros estatutos * significa
“la variable señalada por”
*px=54 ;
Operador de indirección
px es el nombre de variable
7.2 Operadores ... (3)
declaración Asignación de dirección a apuntador
int *px, x; px=&x; *px=10; asigna 10 a “la variable
señalada por px”, es decir x
Apuntador del tipo de dato apropiado
Operador de indirecciónpx es el nombre de variable
7.2 Operadores ... (4)
declaración Asignación de dirección a apuntador
int *px, x; px=&x; px=px+1; px almacenará la
Apuntador del tipo de dato apropiado
Sin operador de indirección
siguiente dirección de memoria, 2 bytes adelante
px es el nombre de variable
7.2 Operadores ... (5) int *px, x; Apuntador a dato entero, se desplaza px=&x; 2 bytesmás px=px+1;
1310:x1400:px1310:x1400:px-1310 1310:x1400:px-1312
7.2 Operadores ... (6)
declaración Asignación de dirección a apuntador
float *pf, f; pf=&f; pf=pf-1; pf almacenará la
Apuntador del tipo de dato apropiado
anterior dirección de memoria, 4 bytes atrás
Sin operador de indirección
pf es el nombre de variable
7.2 Operadores ... (7) int *px, x; Apuntador a datoentero, se desplaza px=&x; 2 bytes menos px=px-1;
1310:x1400:px1310:x1400:px-1310 1310:x1400:px-1308
Ejemplo: Uso de apuntadores en main()
suma2b.C
int main() { int x=2,y=4; int *px,*py;
printf("\nLos valores son %d y %d",x,y); px=&x; *px=*px+10; py=&y; *py=*py+10;
printf("\n Ahora los valores son %d y %d",x,y);
return(0);
}
Ejemplo: Paso de dos valores a una función. sin usarapuntadores
valores.C
/* valores.c Paso de valores a una función*/ /* la función acepta dos valores*/ void imprimir(int x,int y);
int main()
{ int x=4,y=7;
imprimir(x,y);
return(0); }
/* funcion imprimir */ /* imprime los valores de los dos argumentos */ void imprimir(int a, int b)
{
printf("Los valores son %d y %d ", a , b);
}
Ejemplo: Función que regresa dos...
Regístrate para leer el documento completo.