#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,所以它应该工作,对吗?
解决方法
为什么你想要一个struct Point **?你可以改写相同的
void test(struct Point *a,int len) { //some stuff printf("%f\n",a[i].x); }
并称之为
test(P,len);
这样,恕我直言,要求
I want to pass a pointer to the array
也遇到了#.
(#)注意:要严格,这里我们将指针传递给数组的第一个元素,但是,行为比较相等.感谢@alk先生的评论.