Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ALGORITMOS I
Apuntadores
Contexto
Lenguaje C es un lenguaje de alto nivel porque permite
programar a bajo nivel. La programación a bajo nivel se refiere a
la manipulación de los recursos físicos de un equipo
computacional. Los apuntadores manipulan de manera directa las
localidades de memoria RAM de la computadora.
Contexto
Los apuntadores permiten a los programadores simular las
llamadas por referencia, y crear y manipular estructuras de datos
dinámicas, es decir, estructuras de datos que pueden crecer y
encogerse en tiempo de ejecución.
Definición
Un apuntador es una variable cuyo valor es una dirección de
memoria de otra variable que contiene un valor específico.
printf(“%d”, *ptrAnio);
Ejemplo Nota. Alguno especificadores de conversión:
printf( "\nDirección de anio es: %x", &anio ); %g, %G - Coma flotante, usando la notación
que requiera menor espacio
printf( "\nValor de ptrAnio es: %p", ptrAnio );
printf( "\nValor al que apunta ptrAnio es: %d", *ptrAnio ); %o - Octal sin signo de un entero
void main(){
int varMain = 1; // Variable Local
miFuncion(); // Invocando la funcion
//printf("%d \n", varFuncion); // Error
}
void miFuncion(){
int varFuncion = 7; // Variable Local
printf("%d \n", varFuncion);
printf("%d \n", varGlobal);
//printf("%d \n", varMain); // Error
}
Llamada a funciones por referencia
‘\0’ 0xA08
void main() {
‘d’
int i = 0; 0xA09
char *ptrArrCadenas[ 3 ] = ‘e’
0xA0A
{ "Facultad", "de", "Ingenieria" };
‘\0’
0xA0B
while( i < 3 ) { ‘I’
0xA0C
printf( "%x = ", ptrArrCadenas[ i ] );
printf( "%s - ", *( ptrArrCadenas +
i ) ); ptrArrCadenas[ 0 ] 0xA00
printf( "%s\n", ptrArrCadenas [ i ] ); ptrArrCadenas[ 1 ] 0xA09
i++;
ptrArrCadenas[ 2 ] 0xA0C
}
Ejemplo
#include <stdio.h>
void main () {
char cadena0[] = "elNombre";
char cadena1[] = "elApellidoPat";
char cadena2[] = "elApellidoMat";
char *arrPtrs[3];
int i;
arrPtrs[0] = cadena0;
arrPtrs[1] = cadena1;
arrPtrs[2] = cadena2;
return 0;
}
Tipo de dato
#include <stdio.h> que devuelve
Tema extra: Apuntadores
int suma (int, int);
a funciones Nombre o
Tipo de
Parámetro(s)
identificador
void main() {
int (*apFuncion) (int, int) = NULL;
- Los apuntadores pueden definirse para apuntar a apFuncion = suma;
objetos -incluyendo funciones- de cualquier
tipo de dato. printf( "Ej ::: %d", apFuncion( 4, 3 ) );
printf( "\nLa direccion de suma es:
%p\n", apFuncion );
- Por lo tanto el apuntador guardará la dirección }
de memoria donde está la función.
int suma (int a, int b){
return a + b;
}