【问题标题】:Passing a single row in a 3D array to function将 3D 数组中的单行传递给函数
【发布时间】:2020-11-27 07:08:21
【问题描述】:

我试图将一行多维数组作为指针传递给函数。 3d 数组存储在以下结构中。

typedef struct{
double complex CUR[MAX_CHANNELS][MAX_HARM][4];
double complex VOL[MAX_CHANNELS][MAX_HARM][4];
}VALS;

我正在尝试将一行作为参数传递给以下函数。

void foo(double complex *V,double complex *I);

在主程序中,我将第一行作为指针传递。但在执行过程中,我收到“不兼容的指针类型警告”。

foo(&VALS.VOL[2][0],&VALS.CUR[2][0]);

【问题讨论】:

  • 你不需要&。当用作函数参数时,数组会自动衰减为指针。

标签: c pointers multidimensional-array struct


【解决方案1】:

由于第三维仍然是一个数组,所以vals.VOL[2][0]vals.CUR[2][0] 的结果类型是double* 类型(指向数组的第一个元素)。因此不需要&

foo(vals.VOL[2][0], vals.CUR[2][0]);

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2015-08-15
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多