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);
}
尝试此操作时,我遇到运行时错误。有人可以帮忙解决这个问题吗? 提前谢谢。
答案 0 :(得分:1)
您没有为x
分配任何内存:您的程序行为未定义。
对于这个例子,你可以逃脱
x x1;
fill_array(x1.a, 10, 0);
即。使用x
的自动存储时长。这是因为x1.a
在传递给函数fill_array
时会有效地衰减到指针。
答案 1 :(得分:1)
您尚未为x1分配内存。
int main(void) {
x *x1 = malloc(sizeof(x));
if(0 !=x1)
{
fill_array(x1->a, 10, 0);
free(x1);
}
}
答案 2 :(得分:-1)
您的运行时错误应该是segmentation fault
我可以看一下你的第一个诗人x *x1;
未分配,并且您正在尝试访问未分配的pointeur的内容,因此...段错误。
有2个解决方案。
使用本地内存x x1;
声明您的结构
或分配