Punteros
int x=5, y=6;
int *px, *py;
px=py; copia el contenido de py sobre px, de modo que px apuntará al mismo objeto que
apunta py.
*px=*py; copia el objeto apuntado por py a la dirección apuntada por px.
px=&x; px apunta a x.
py=0; hace que py apunte a nada (NULL).
px++; apunta al elemento siguiente sobre el que apuntaba inicialmente
Se puede sumar o restar enteros a y de punteros.
p1=p1+9; p1 apunta al noveno elemento del tipo p1 que está más allá del elemento al
que apunta actualmente.
Punteros y arrays
char cad[80], *p1;
p1 = cad p1 ha sido asignado a la dirección del primer elemento del array
cad.
Para acceder al quinto elemento de cad se escribe:
cad[4] o *(p1+4)
Arrays de punteros
Array de punteros a enteros:
int *x [10];
Para asignar la dirección de una variable entera llamada var al tercer elemento del array de punteros, se escribe:
x[2]=&var;
Para encontrar el valor de var:
*x[2]
Punteros a punteros
puntero ----------> variable Indirección simple
puntero ---------> puntero ---------> variable Indirección múltiple
float **balancenuevo;
balancenuevo no es un puntero a un número en coma flotante, sino un puntero a un puntero a float.
Ejemplo:
main(void)
{
int x, *p, **q;
x=10;
p=&x;
q=&p;
printf("%d",**q); /* imprime el valor de x */
return 0;
}