【发布时间】:2015-07-18 04:55:23
【问题描述】:
#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);
标签: c arrays function pointers struct