int a = 10, b = 20, c[10];
int *p; p = &a;
b = *p;
*p = 0;
p = &z[0];
int main() { int y, *z; y = 4; z = &y; y = *z + 9;
return 0; }
int main() { int foo, *bar, **baz, quux;
bar = &quux; foo = 4;
baz = &bar; **baz = 13;
bar = &foo; **baz = 9;
return 0; }
int main() { int a, b, *p, *q;
a =10; b =20;
p = &a; q = &b; *q = a + b;
a = a + *q; q = p; *q = a + b;
printf("a=%d b=%d *p=%d *q=%d",a,b,*p,*q); }
char *str_ptr; char str_array[];
str_pointer++; // Se vale
str_array++; // No se vale :(
int* int_array = {1, 2, 3}; // No se vale :(
int array[5] = {1, 2, 3, 4, 5};
// ptr = array; int *ptr = &array[0]; array[1]; // *(ptr+1); array[3]; // *(ptr+3); array[2] = 5; // *(ptr+2) = 5;
x = *p++;
=> p = p + 1;
=> x = *p;
x = (*p)++;
=> *p = *p + 1;
=> x = *p;
int* ptr_array[10];
int* p = ptr_array[0];
// p es el puntero en la posición 0
int a = *ptr_array[0];
// a es el contenido del puntero en la pos. 0
int a[10][10];
int *b[10];
int (*func)();
x = *(p+1) => x = *(p+1);
x = *p+1 => x = (*p) + 1;
x = (*p)++ => x = *p; => *p = *p + 1;
x = *p++ ? (*p++) ? *(p)++ ? *(p++) ? => x = *p ; p = p + 1;
x = *++p ? => p = p + 1 ;
=> x = *p ;
void addOne(int x){
x = x + 1;
} int y = 5; addOne(y);
printf(“y = %d\n”, y);
void addOne(int *p){
*p = *p + 1;
} int y = 5; addOne(&y);
printf(“y = %d\n”, y);
void incrementPtr(int *p){
p = p + 1;
} int a[3] = {50, 60, 70}; int *q = a;
incrementPtr(q); printf(“*q = %d\n”, *q);
void incrementPtr(int **h){
*h = *h + 1;
} int a[3] = {50, 60, 70}; int *q = a;
incrementPtr(&q); printf(“*q = %d\n”, *q);