基本上我的代码中有这样的东西
struct connComp {
struct connComp *parent;
struct connComp *neigh[noNN];
int *pSpinValue, SpinValue, Flag;
unsigned int size;
} comp[N];
当我尝试使用结构comp[N]
数组作为void function(struct connComp)
类型函数的输入时,通过在我的代码中编写function(comp)
,我从gcc编译器收到以下错误:
'function'函数(comp)的参数1的不兼容类型
预期'struct connComp'但参数的类型为'struct connComp *'
所以看起来comp[N]
被声明为指针,我真的无法弄明白为什么。非常感谢您的任何帮助!
答案 0 :(得分:2)
将指针和数组传递给函数,C是等效的。 comp
是N connComp
个结构的数组。将comp
传递给函数时,您将拥有数组起始地址,其行为与指针的行为方式相同。要在需要结构的函数中使用comp
,必须取消引用指针 - 尝试传入comp[0]
。
答案 1 :(得分:1)
C 中的数组是指针。具体来说,是数组的第一个元素。
要将单个元素传递给函数,您需要指定哪个元素。 e.g。
function(comp[2]);
如果要在函数中处理整个数组,则需要更改函数以接受结构数组或指向结构的指针。 e.g。
void function(struct connComp[N]); /* to receive an array of a static size */
void function(struct connComp*); /* to receive an array of a variable size */