Mortanius
-
Total de itens
2 -
Registro em
-
Última visita
Posts postados por Mortanius
-
-
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); }
Alterando endereços armazenados nos ponteiros em funções C
em Grupo de Estudos
Postado
Valeu por responder, vangodp. Tinha tirado essa dúvida ainda essa madrugada noutro fórum e, de fato: estava confundindo arranjos com vetores, achando que se comportavam da mesma forma, mas o arranjo tem tamanho fixo, e o mesmo vale pro endereço, nem como ponteiro pude usar. Valeu.