Curso de Programación en C/Prog72
Ir a la navegación
Ir a la búsqueda
Prog72
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int urn[5] = {100,200,300,400,500};
6 int * ptr1,
7 * ptr2,
8 * ptr3;
9
10 ptr1 = urn;
11 ptr2 = &urn[2];
12
13 printf( "Valor de pointer, Pointer dereferenciado, Dirección de pointer\n");
14 printf( "ptr1 = %p, *ptr1 =%d, &ptr1 = %p\n",
15 ptr1, *ptr1, &ptr1 );
16
17 // Adición con pointers
18 ptr3 = ptr1 + 4;
19 printf( "\nAdición de int a un pointer:\n" );
20 printf( "ptr1 + 4 = %p, *(ptr1 + 3) = %d\n",
21 ptr1 + 4, *(ptr1 + 3) );
22
23 ptr1++; // incrementar un pointer
24 printf( "\nValores después de ptr1++:\n" );
25 printf( "ptr1 = %p, *ptr1 =%d, &ptr1 = %p\n",
26 ptr1, *ptr1, &ptr1);
27
28 ptr2--; // decrementar un pointer
29 printf( "\nValores después de --ptr2:\n" );
30 printf( "ptr2 = %p, *ptr2 = %d, &ptr2 = %p\n",
31 ptr2, *ptr2, &ptr2);
32
33 --ptr1; // restorar valor original
34 ++ptr2; // restorar valor original
35
36 printf( "\nPointers regresados a sus valores originales:\n" );
37 printf( "ptr1 = %p, ptr2 = %p\n", ptr1, ptr2 );
38
39 // un pointer menos otra pointer
40 printf( "\nUn pointer menos otro pointer:\n" );
41 printf( "ptr2 = %p, ptr1 = %p, ptr2 - ptr1 = %d\n",
42 ptr2, ptr1, ptr2 - ptr1);
43
44 // un pointer menos un intero
45 printf( "\nUn pointer menos un intero:\n");
46 printf( "ptr3 = %p, ptr3 - 2 = %p\n",
47 ptr3, ptr3 - 2);
48
49 return 0;
50 }
Resultado
[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog72 Prog72.c [rrc@Pridd CClase]$ ./Prog72 Valor de pointer, Pointer dereferenciado, Dirección de pointer ptr1 = 0xbfb2da84, *ptr1 =100, &ptr1 = 0xbfb2da9c Adición de int a un pointer: ptr1 + 4 = 0xbfb2da94, *(ptr1 + 3) = 400 Valores después de ptr1++: ptr1 = 0xbfb2da88, *ptr1 =200, &ptr1 = 0xbfb2da9c Valores después de --ptr2: ptr2 = 0xbfb2da88, *ptr2 = 200, &ptr2 = 0xbfb2da98 Pointers regresados a sus valores originales: ptr1 = 0xbfb2da84, ptr2 = 0xbfb2da8c Un pointer menos otro pointer: ptr2 = 0xbfb2da8c, ptr1 = 0xbfb2da84, ptr2 - ptr1 = 2 Un pointer menos un intero: ptr3 = 0xbfb2da94, ptr3 - 2 = 0xbfb2da8c [rrc@Pridd CClase]$