SHOW:
|
|
- or go back to the newest paste.
| 1 | - | /** To make this code work in 64-bit architectures, compile with -m32 */ |
| 1 | + | |
| 2 | #include<stdio.h> | |
| 3 | ||
| 4 | int n_indirecciones(void* inicial, unsigned int indirecciones); | |
| 5 | ||
| 6 | int main (void) {
| |
| 7 | int val = 23; | |
| 8 | int* p1 = &val; | |
| 9 | int** p2 = &p1; | |
| 10 | int*** p3 = &p2; | |
| 11 | int retval; | |
| 12 | ||
| 13 | retval = n_indirecciones (p3,3); | |
| 14 | - | |
| 14 | + | |
| 15 | printf("%i \n", retval);
| |
| 16 | - | |
| 16 | + | |
| 17 | return EXIT_SUCCESS; | |
| 18 | - | |
| 18 | + | |
| 19 | } | |
| 20 | - | |
| 20 | + | |
| 21 | int n_indirecciones(void* inicial, unsigned int indirecciones) {
| |
| 22 | unsigned int i; | |
| 23 | int ** current_pointer = NULL; | |
| 24 | int result; | |
| 25 | - | int * current_pointer = NULL; |
| 25 | + | |
| 26 | result = 0; | |
| 27 | ||
| 28 | current_pointer = (int**) &inicial; | |
| 29 | for (i=0; i<indirecciones-1; i++) {
| |
| 30 | - | current_pointer = inicial; |
| 30 | + | current_pointer = (int **)*current_pointer; |
| 31 | } | |
| 32 | - | current_pointer = (int *)*current_pointer; |
| 32 | + | |
| 33 | result = **current_pointer; | |
| 34 | return result; | |
| 35 | - | result = *current_pointer; |
| 35 | + |