Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El tipo de dato int lo utilizamos de molde para crear a las variables Entero1, Entero2 y Entero3
Entero3
int
Entero2
Entero1 2
PROGRAMACIÓN I - FACET - UNT
Variables
#include <stdio.h> Las posiciones o direcciones de memoria se las
int main( ){ representa en notación hexadecimal, dado que la
int Entero1, Entero2, Entero3; cantidad de dígitos utilizados para representar un
return 0; número en hexadecimal es menor a la cantidad
} utilizada en otras bases. Además es la forma más
simple de conocer su equivalente en binario.
Dado que el tipo de dato int ocupa 4 bytes, la
distancia que existe entre dos posiciones de 0x
Se utiliza el prefijo (cerox) para indicar que el
memoria contiguas, correspondientes a las dos número está expresado en base hexadecimal.
variables declaradas de tipo int, también es 4. El
incremento en la dirección depende del tamaño del
tipo de dato.
0x62FE14
Entero3
int 0x62FE18
Entero2
0x62FE1C
Direcciones o posiciones de
memoria de cada uno de los Entero1 3
espacios de memoria o variables
0x62FE14 0x62FE14
420
Puntero3 Entero3
0x62FE18 0x62FE18
196
Variables
puntero
Puntero2 Entero2
0x62FE1C 0x62FE1C 315
Puntero1 Entero1 5
PROGRAMACIÓN I - FACET - UNT
Punteros
Mediante el uso de un puntero, es posible acceder a un espacio de memoria para:
● Usar el dato (o valor) almacenado es ese espacio
● O almacenar (o cambiar) un dato (o valor) en ese espacio.
Siendo el valor de la variable puntero igual a la ubicación (o dirección de memoria) de dicho espacio de memoria.
Es decir que se puede utilizar un puntero, que previamente esté apuntando a una variable, para:
● Acceder en forma indirecta a la variable y usar el dato (o valor) contenido en dicha variable
● O también para acceder en forma indirecta a la variable y almacenar o cambiar un dato (o valor) en dicha variable.
● El símbolo &, llamado operador dirección o referencia, se utiliza para obtener la dirección de memoria de una
variable.
&
#include <stdio.h>
int main( ){
int Entero1, Entero2, Entero3;
return 0;
}
}
*
a) Se debe anteponer al nombre de la variable un (asterisco), esto indica que esa variable será un puntero.
return 0;
En el ejemplo anterior solamente se declararon 3 variables tipo puntero, quedando preparadas para apuntar a
cualquier variable que sea de tipo entero. También se podría declarar de igual manera punteros a float, char, etc.
Importante: Cuando utilicemos punteros, siempre debe coincidir el tipo de dato de la variable a la que apuntará,
con el tipo de dato de la variable apuntada.
*
En el ejemplo, usando el se declararon 3 variables tipo puntero, preparadas para apuntar a variables de tipo
entero, después se declararon 3 variables tipo entero y por último, se asigna a cada puntero una dirección de
memoria.
Notar que las variables Entero1, Entero2 y Entero3 todavía no contienen ningún valor inicial conocido. 9
PROGRAMACIÓN I - FACET - UNT
Punteros
#include <stdio.h> Notar que el *, se usa aquí
int main( ){ para declarar punteros
int *puntero1, *puntero2;/* el * se usa aquí para declarar variables puntero a entero*/
*
int Entero1, Entero2; /*Declaración de variables tipo entero*/
*
En el ejemplo, usando el se declararon 2 variables tipo puntero, preparadas para apuntar a variables de tipo
entero, después se declararon 2 variables tipo entero, luego se asigna a cada puntero una dirección de memoria.
*
Dado que puntero1 apunta a Entero1, se puede acceder a la variable Entero1 usando el operador , entonces
*puntero1 se puede utilizar para mostrar el contenido de Entero1 o también se puede utilizar para asignar o
cambiar el valor de Entero1. De igual manera sucede con *puntero2 y Entero2. 10
PROGRAMACIÓN I - FACET - UNT
Punteros
#include <stdio.h>
int main( ){
int *puntero1, *puntero2;/* el * se usa aquí para declarar variables puntero a entero*/
return 0;
}
11
PROGRAMACIÓN I - FACET - UNT
Punteros
#include <stdio.h>
int main( ){
int *puntero1, *puntero2;/* el * se usa aquí para declarar variables puntero a entero*/
int Entero1, Entero2; /*Entero1 y Entero2 están SIN valor inicial, por lo tanto pueden
contener cualquier valor aleatorio*/
Notar que Entero1 y
puntero1 = &Entero1; /*puntero1 ahora apunta a la variable Entero1 */ Entero2 no tienen
puntero2 = &Entero2; /*puntero2 ahora apunta a la variable Entero2 */ asignado un valor
inicial. Entonces el
printf("\n Entero1 = %i, Entero2 = %i\n", Entero1, Entero2); valor que contendrán
printf("\n *puntero1 = %i, *puntero2 = %i\n", *puntero1, *puntero2); será cualquier valor
printf("\n puntero1 = %p, puntero2 = %p\n", puntero1, puntero2);
desconocido
printf("\n &Entero1 = %p, &Entero2 = %p\n", &Entero1, &Entero2);
(NO necesariamente
return 0; igual a cero)
}