Punteros en el lenguaje de programación C
Enviado por Karla Dorely • 11 de Junio de 2021 • Tarea • 1.735 Palabras (7 Páginas) • 62 Visitas
Karla Dorely Hernandez Becerra 11A 13-14
Preguntas
- Qué es un puntero en el lenguaje de programación C?
Un puntero es una variable que contiene la dirección de memoria de otra variable. Se usan para pasar información entre una función y puntos de llamada. Los punteros permiten código más compacto y eficiente; utilizándolos en forma ordenada dan gran flexibilidad a la programación.
- Como se declara una variable puntero en C?
La siguiente es la manera de declarar un puntero que apunte a un entero:
int *x;
Esto se puede leer «lo apuntado por x es un entero». En este caso, * no es una multiplicación, sino una derreferenciación, como veremos más abajo.
Una vez declarada x de la manera ya mostrada, los únicos valores válidos que se puede asignar a x son NULL o una dirección de memoria donde haya un entero:
int a, b, c;
float z;
int *p;
int *q;
p = NULL; /* valido */
p = &a; /* valido */
p = &b; /* valido */
p = &z; /* invalido (z no es un entero) */
p = 142857; /* invalido (142857 no es una dirección de memoria) */
q = &b; /* valido */
q = p; /* valido */
q = NULL; /* valido */
q = &p; /* invalido (p no es un entero) */
Por supuesto, es posible cambiar int por cualquier otro tipo para declarar punteros a datos de otra naturaleza.
Ojo con la siguiente sutileza al declarar varios punteros de una vez:
int *x, *y; /* x e y son punteros */
int *x, y; /* x es puntero, y es entero */
- Qué se entiende por la dirección de una celda de memoria?
En informática, una dirección de memoria es un formato de localización de bytes de memoria con la cual un programa informático o un dispositivo de hardware accede o almacena datos para su posterior utilización.
Una forma común de describir la memoria principal de un ordenador es como una colección de celdas que almacenan datos e instrucciones. Cada celda está identificada unívocamente por un número o dirección de memoria.
Para poder acceder a una ubicación específica de la memoria, la CPU genera señales en el bus de dirección, que habitualmente tiene una longitud de 32 bits en la mayoría de máquinas actuales. Un bus de dirección de 32 bits permite especificar hasta
2/32 2^{32} = 4.294.967.296 direcciones de memoria distintas.
Las direcciones de memoria se expresan a menudo en código hexadecimal. Por ejemplo, para expresar el valor binario 111111010100000000000010101100 se escribe 0x3F5000AC en hexadecimal.
- Como están numeradas normalmente las direcciones de memoria?
para localizar un dato en la memoria principal, la dirección que ocupa éste debe circular por el bus de direcciones. Según cual sea la amplitud del bus de direcciones y la longitud de palabra, así será el tamaño de la memoria que puede gestionar el ordenador. Es decir, el número de casillas o direcciones de memoria que pueden ser indicadas y el tamaño de la información que contienen. Para un bus de direcciones de 8 bits el ordenador podrá gestionar 28 = 256 posiciones de memoria y en cada una de ellas podremos almacenar 8 bits si esta es la longitud de palabra de ese ordenador. La figura anterior muestra la memoria de un ordenador con una longitud de palabra de 8 bits y un bus de direcciones también de 8 bits. Deberían existir 28 = 256 casillas - desde la 00000000 hasta la 11111111 (en lenguaje binario), cada una conteniendo un dato de 8 bits de tamaño , en total 256 x 8 = 2048 bits o 256 Bytes. Los datos contenidos en las casillas de memoria no tienen evidentemente ninguna relación con la dirección de estas, ya que van variando conforme se ejecuta el programa o se producen entradas de nuevos datos. Podemos escribir M = 2 D * P , siendo D la amplitud del bus de direcciones, P la longitud de palabra del ordenador y M la memoria en bits. |
...