c - 将结构成员数组传递给 C 中的函数

标签 c arrays pointers struct

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/

相关文章:

c - 将指针分配给具有指向其字段的指针的结构

c - 为什么在 if 条件中 a=4 被评估为 true 而 b=0 被评估为 false?

c++ - 我在这里使用 "cin.get"有什么问题?

c - 指针取消引用顺序的段错误

c - & 运算符不能应用于 C 中的常量

从 Lua 调用 C 嵌套函数指针

c# - 另一个 PInvoke - 错误消息显示未找到源?

c - 在C中取整的有符号整数除法

javascript - 不注意数组长度条件的无限循环

Java,冒泡排序,数组,线程中的异常 "main"错误