#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;
}
Я пытаюсь передать массив структур в функцию (я хочу передать указатель на массив, а не сделать копию). Когда я пытаюсь использовать массив внутри функции, я получаю нарушение доступа. Каков правильный способ сделать это? Что я делаю не так? a == &P
, поэтому он должен работать, не так ли?Ошибка при передаче указателя на массив структур
Но 'P' уже * есть * указатель, он указывает на первый элемент выделенной памяти (массив). Передавая указатель, как и вы, вы не копируете ничего, кроме фактического указателя. –
'printf ("% f \ n ", (* a) [i] .x);' – BLUEPIXY