Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integrantes:
MORELLA GUZMÁN
HENRY BRACHO
PROFESOR:
Lic. CARLOS ALFONZ
PUNTEROS
DEFINICION DE PUNTEROS
DECLARICION DE PUNTEROS
OPERAC IONES
OPERADORES
PUNTEROS Y ARREGLOS
PUNTEROS
DEFINICION DE PUNTEROS
El tipo de datos más característico del C son los punteros. Un puntero contiene un
valor que es la dirección en memoria de un dato de cierto tipo. Los punteros se
emplean en C para muchas cosas, por ejemplo recorrer vectores, manipular
estructuras creadas dinámicamente, pasar parámetros por referencia a funciones,
etc.
DECLARACION DE PUNTEROS
DECLARACIÓN DE UN PUNTERO
E J EM PLO S .
• Punteros a un e
PUNTEROS
EJEMPLOS
•Punteros a un dato: d a to
p
a rra y
•Punteros a un array: •Punt
p cadena
p q
PUNTEROS
DECLARACION DE PUNTEROS
/*1*/ struct MyStruct
{/*2*/ int m_aNumber;
/*3*/ float num2;
/*4*/ };
/*5*
/ /*6*/ int * pJ2;
/*7*/ struct MyStruct * pAnItem;
Las primeras 4 líneas definen la estructura, La línea 6 declara una variable que
apuntara a un entero, y la línea 7 declara una variable que apunta a alego de la
estructura MyStruct. Entonces declarar un puntero es algo que apunta a algo de algún
tipo, mas que contener el tipo, el asterisco (*) es ubicado antes del nombre de la
variable.
En las siguientes líneas de código, var1 es un puntero a un entero largo (long)
mientras var2 es un entero largo (long) y no un puntero a un entero largo. En la
segunda línea p3 es declarado como un puntero a un puntero de un entero.
long * var1, var2; int ** p3;
PUNTEROS
Si en una misma declaración de variables aparecen varios punteros, hay que escribir
el asterisco a la izquierda de cada uno de ellos:
Un puntero nulo (null) no apunta a ninguna parte -dato válido- en particular, es decir,
«un puntero nulo no direcciona ningún dato válido en memoria». Para declarar un
puntero nulo se utiliza la macro NULL, definida en los archivos de cabecera STDEF .
H, STDIO. H, STDLIB. H y STRING. H.
#define NULL O
Inicializar una variable puntero a nulo es:
char *p = NULL;
Un puntero (void *; ) declarar de modo que apunte a cualquier tipo de dato, es decir,
no se asigna a un tipo de dato específico y se denomina puntero genérico puede
direccionar cualquier posición en memoria, pero el puntero no está unido a un tipo de
dato específico. De modo similar, los punteros void pueden direccionar una variable
float, una char, o una posición arbitraria o una cadena.
OPERADORES DE PUNTEROS
OPERADORES.
t i p o _ v a r v a r ;
t i p o _ v a r * p
p v a r p = & v a r ;
OPERADOR &.
OPERACIONES DE PUNTEROS
OPERACIONES.
ASIGNACIÓN.
p variable1 p variable1
p=q
q variable2 q variable2
int a[10];
Punteros no inicializados
Si se altera el valor al que apunta un puntero no inicializado, se estará modificando cualquier
posición de la memoria.
main()
{
int* puntero;
*puntero = 1200; /* Se machaca una zona cualquiera de la memoria */}
Confusión de tipos
Un puntero a un tipo determinado puede apuntar a una variable de cualquier otro tipo.
Aunque el compilador lo puede advertir, no es un error.
(Afortunadamente, esto no ocurre en C++).
main()
{
int p;
double numero;
int* puntero;
p = № /* incorrecto, pero el compilador no aborta */
*p = 33; /* Un desastre */}
PUNTEROS
main()
{
int* puntero;
while (...)
{
int local;
puntero = &local; /* ‘puntero’ apunta a una variable local */
*puntero = 33; /* correcto */ }
/* ahora ‘puntero’ apunta a una zona de memoria inválida */
puntero = 50; /* catástrofe */}