将指针传递给结构数组时出错

前端之家收集整理的这篇文章主要介绍了将指针传递给结构数组时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#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先生的评论.

猜你在找的C&C++相关文章