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

标签 c arrays function pointers struct

#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 - 将指针传递给结构数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30104101/

相关文章:

检查命令行输入是否为有效整数 (C)

转换 Bash 函数来计算 n!到C?

arrays - 使用 Array.every 缩小数组类型的联合

c - 对已经寻址数组基址的指针应用后递减会调用未定义的行为吗?

php - 将一个 Div 包裹在两个 Div 周围,这是一个使用 PHP 的 Wordpress 函数

c++ - 查找填充区域的矩形大小

c++ - 外部 C 和结构方法

arrays - 使用 MATLAB 在坐标列表中查找每个坐标的第一个和最后一个索引

C++ 编译器可以内联函数指针吗?

JavaScript 温度转换函数不起作用