Pesquisar na Comunidade
Mostrando resultados para as tags ''pointer''.
Encontrado 1 registro
-
Alterando endereços armazenados nos ponteiros em funções C
uma questão postou Mortanius Grupo de Estudos
Tive a ideia de alterar os endereços de dois ponteiros (um pelo outro) invés de trocar os valores armazenados por eles. A intenção seria fazer isso com vetores (arrays), já que seria mais viável, aí veio o problema: Funcionou com ponteiros mas não funcionou com os vetores. Podem me ajudar a entender por quê? Os códigos: Ponteiros: #include<stdio.h> #include<stdlib.h> void invert_ad (int** a, int** b) { int* temp; temp = *a; *a = *b; *b = temp; } main() { int a = 10; int* pointer_a = &a; int** ppointer_a = &pointer_a; int b = 20; int* pointer_b = &b; int** ppointer_b = &pointer_b; printf("pointer_a Adress: %p\n", pointer_a); printf("pointer_b adress: %p\n", pointer_b); invert_ad (ppointer_a, ppointer_b); printf("pointer_a adress: %p\n", pointer_a); printf("pointer_b adress: %p\n", pointer_b); } Arrays: #include<stdio.h> #include<stdlib.h> void invert_ad (int** a, int** b) { int* temp; temp = *a; *a = *b; *b = temp; } main() { int array_a[5] = {0, 1, 2, 3, 4}; int array_b[5] = {5, 6, 7, 8, 9}; int** parray_a = &array_a; int** parray_b = &array_b; printf("array_a adress %p\n", array_a); printf("array_b adress %p\n", array_b); invert_ad (parray_a, parray_b); printf("array_a adress %p\n", array_a); printf("array_b adress %p\n", array_b); }