运行结果及报错内容,如何解决?(关键词-数组)

问题遇到的现象和发生背景 数组问题
问题相关代码,请勿粘贴截图

img

我的解答思路和尝试过的方法
我想要达到的结果为什么a[1]=16?

对a[3]进行初始化,如下代码:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
void SetArray(int []);
int main()
{
    int a[3] = {0,16};
    printf("before:%d %d\n",a[0],a[1]);
    SetArray(a);
    printf("before:%d %d\n",a[0],a[1]);
    system("pause");
}
void SetArray(int p[])
{
    p[0] = 1;
    p[1] = 2;
    p[2] = 3;
}

结果:

img

你定义了但是没有初始化
此时分配的内存是不知道什么程序遗留下来的数据
你再运行可能它就又变了
研究它到底是个什么数是没有意义的,你可以把它看做是随机数

数组a在初始化时是一个栈变量,而栈变量没有显式初始化的话,值是未定义的,任何值都有可能,所以第1行的输出每一次都可能不同。