oregon, ho cambiato il mio esempio, in questo modo:
codice:
#include <stdio.h>
#include <stdlib.h>
void stampa(void *A);
int main(){
int i;
// array di puntatori a void*
// init:
void **A = (void**)malloc(sizeof(void*)*5);
for(int i=0; i<5; i++){
A[i] = (void*)malloc(sizeof(void*));
}
// end init
// array di interi
int *B = (int*)malloc(sizeof(int)*5);
for(i=0; i<5; i++){
B[i] = i;
}
printf("indirizzo A in main: %x\n",A);
// A = {&B[0],&B[1],&B[2],&B[3],&B[4]}
for(i=0; i<5; i++){
A[i] = &B[i];
printf("B[%d] - %x\n", i, &B[i]);
printf("A[%d] - %x\n", i, A[i]);
printf("VAL A[%d] - %d\n", i, *((int*)A[i]));
}
stampa(A);
}
void stampa(void *A){
printf("indirizzo A in stampa: %x",A);
// scorro l'array di puntatori a void*
for(int i=0; i<5; i++){
// qui devo stampare i valori puntati dai void*
}
}
Sia nel main, che in stampa, ho lo stesso indirizzo, per cui la matrice la passo correttamente. Per� se stampo in questo modo:
codice:
printf("A[%d] = &d",i,*((int*)(A+i)));
mi stampa valori a cavolo...per cui, come effettuo la stampa nella funzione "stampa"?