C 通过函数调用向数组中添加元素

C 通过函数调用向数组中添加元素,c,C,有人能给我解释一下为什么这个代码是有效的吗 #include <stdio.h> void set_array(int array[3]); int main() { int a[3] = {1, 2, 3}; set_array(a); for (int i = 0; i < 4; i++) { printf("%d\n", a[i]); } } void set_array(int array[3]) {

有人能给我解释一下为什么这个代码是有效的吗

#include <stdio.h>

void set_array(int array[3]);

int main()
{
    int a[3] = {1, 2, 3};

    set_array(a);

    for (int i = 0; i < 4; i++)
    {
        printf("%d\n", a[i]);
    }
}

void set_array(int array[3])
{
    array[3] = 4;
}
#包括
void set_数组(int数组[3]);
int main()
{
int a[3]={1,2,3};
设置_数组(a);
对于(int i=0;i<4;i++)
{
printf(“%d\n”,a[i]);
}
}
void set_数组(int数组[3])
{
数组[3]=4;
}
如何通过函数调用将元素添加到数组中?有人能解释一下窗帘后面发生了什么吗


提前感谢。

您不能,您需要使用
malloc()
分配数组,然后使用
realloc()

这是未定义的行为。您希望发生什么?为什么?我发现它编译得很好,实际上向
a
数组添加了一个元素。你们自己试试看。