#include <stdio.h>
#include <stdlib.h>
struct Point {
double x;
};
void test(struct Point **a, int len)
{
int i;
printf("a = %p\n", a);
for (i = 0; i < len; ++i)
printf("%f\n", a[i]->x);
}
int main()
{
int i;
int len = 4;
struct Point *P;
P = malloc(len*sizeof(struct Point));
for (i = 0; i < len; ++i) {
P[i].x = i;
printf("%f\n", P[i].x);
}
printf("&P = %p\n", &P);
test(&P, len);
return 0;
}
Sto provando a passare una matrice di strutture a una funzione (voglio passare un puntatore all'array, non creare una copia). Quando provo a utilizzare l'array all'interno della funzione, ottengo una violazione di accesso. Qual è il modo corretto per farlo? Che cosa sto facendo di sbagliato? a == &P
, quindi dovrebbe funzionare, giusto?Errore durante il passaggio del puntatore all'array di strutture
Ma 'P' già * è * un puntatore, punta al primo elemento della memoria allocata (la matrice). Passando il puntatore, così com'è, non stai copiando nulla se non il puntatore effettivo. –
'printf ("% f \ n ", (* a) [i] .x);' – BLUEPIXY