]> git.llucax.com Git - z.facultad/75.31/presentacion.git/blob - ejemplos/aritm_punteros.d
Prácticamente terminado, falta redondear detalles.
[z.facultad/75.31/presentacion.git] / ejemplos / aritm_punteros.d
1
2 void pp(int* p, char[] msg = "")
3 {
4         if (msg.length) printf("\n%.*s\n", msg);
5         printf("\tp = %X\n", p);
6 }
7
8 void pa(int[2] a, char[] msg)
9 {
10         printf("\n%.*s\n", msg);
11         foreach (uint k, inout int v; a)
12                 printf("\tarr[%d] = %d [%X]\n", k, v, &v);
13 }
14
15 int main()
16 {
17         int[2] arr;
18         arr[1] = 1; // asigno el segundo elemento (empieza en 0)
19         pa(arr, "arr[1] = 1");
20         int* p = cast(int*) arr + 1; // apunto a arr[1]
21         pp(p, "int* p = cast(int*) arr + 1");
22         *p = 2; // arr[1] = 2
23         pa(arr, "*p = 2");
24         pp(p);
25         *(--p) = 1; // p apunta a arr[0] y arr[0] = 1
26         pa(arr, "*(--p) = 1");
27         pp(p);
28         p = &(arr[1]); // p apunta a arr[1]
29         pp(p, "p = &(arr[1])");
30         return 0;
31 }
32