

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Aprenda qué son los punteros en c, cómo declararlos y cómo utilizarlos para referenciar variables, estructuras y funciones. El concepto básico de punteros, su sintaxis y ejemplos de declaración y uso. Además, se incluyen referencias a recursos adicionales.
Tipo: Ejercicios
1 / 3
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Un puntero es una variable que contiene la dirección de memoria de un dato o de otra variable que contiene al dato en un arreglo. Esto quiere decir, que el puntero apunta al espacio físico donde está el dato o la variable. Estas funciones reciben o devuelve un valor que es un puntero. Un puntero puede apuntar a un objeto de cualquier tipo, como por ejemplo, a una estructura o una función. Los punteros se pueden utilizar para referencia y manipular estructuras de datos, para referenciar bloques de memoria asignados dinámicamente y para proveer el paso de argumentos por referencias en las llamadas a funciones. Todos los datos se almacenan a partir de una dirección de memoria y utilizando tantos bytes como sea necesario. Por ejemplo, considera la siguiente definición de datos y su correspondiente representación en memoria a partir de la dirección 100. Asumiendo que int y float ocupan 4 bytes cada uno, y char ocupa 1 byte, si d1 está almacenada a partir de la posición 100, entonces su campo n1 tiene esa misma dirección, el campo n2 está en la posición 104 y el campo st está almacenado a partir de la posición 108. Sintaxis Muchas de las funciones estándares de C, trabajan con punteros, como es el caso del scanf o strcpy. Estas funciones reciben o devuelve un valor que es un puntero. Por ejemplo: A scanf se le pasa la dirección de memoria del dato a leer... char a; scanf ("%c",&a); En este caso se le pasa la dirección de memoria de la variable a , la cual tiene reservado un espacio en la memoria por el compilador. Podríamos hacer lo mismo con este código:
char a = (char) malloc ( sizeof (char)); scanf ("%c", a); En este código, al scanf le pasamos el puntero en sí. El puntero es una variable, como bien se ha dicho anteriormente, que contiene una dirección de memoria, por tanto, no es necesario el uso de & para pasarle la dirección de memoria a scanf. Anteriormente hemos tenido que reservar un espacio de memoria con malloc(), que se verá su uso más adelante. Este código sería erróneo y daría una violacion de segmento: char *a; scanf ("%c", a); En este caso, no hemos reservado memoria, por lo tanto, la función escribirá en una dirección de memoria que no le pertenece, y por ello se producirá la susodicha violación de segmento.
Ya se dijo que un puntero es una variable que guarda la dirección de memoria de otra variable, haciendo lógica a esto, decimos que un puntero se declara igual que cualquier otra variable, pero anteponiendo un * (asterisco) antes del nombre de la variable. Su sintaxis sería: tipo *NombrePuntero = NULL; Se iguala a NULL para saber que no tiene asignada ninguna dirección. Donde tipo es el tipo de dato al que referenciará este puntero, es decir, que si se necesita guardar la dirección de memoria de un dato int, se necesita un puntero de tipo int. Veamos el siguiente código: #include <stdio.h> int main() { int a= 0 ; //Declaración de variable entera de tipo entero int *puntero; //Declaración de variable puntero de tipo entero puntero = &a; //Asignación de la dirección memoria de a printf("El valor de a es: %d. \n El valor de puntero es: %d.
n ",a,puntero); printf("La dirección de memoria de *puntero es: %p",puntero); return 0 ; }