Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Punteros en C: Concepto, Declaración y Uso, Ejercicios de Programación C

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

2020/2021

Subido el 07/08/2021

mining-code
mining-code 🇪🇨

1 documento

1 / 3

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
CONCEPTO
¿Qué son los punteros en C?
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:
pf3

Vista previa parcial del texto

¡Descarga Punteros en C: Concepto, Declaración y Uso y más Ejercicios en PDF de Programación C solo en Docsity!

CONCEPTO

¿Qué son los punteros en C?

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.

EJEMPLOS

Declarando punteros

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 ; }