static void fill_array(int arr[], int count, int num)
{
int i;
for(i=0; i<count; i++)
{
arr[i] = num;
}
}
typedef struct
{
int a[10];
} x;
int main(void) {
x *x1;
fill_array(x1->a, 10, 0);
}
在尝试此操作时,我收到运行时错误。有人可以帮忙解决这个问题吗? 提前致谢。
最佳答案
您没有为x
分配任何内存:您的程序的行为未定义。
对于这个例子,你可以逃脱
x x1;
fill_array(x1.a, 10, 0);
即使用x
的自动存储持续时间。这是因为当传递给函数 fill_array
时,x1.a
实际上衰减为指针。
关于c - 将结构成员数组传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221604/