求最大值和下标(为什么可以不初始化)


#include
int main()
{
    int i,a[3],s=0,m;
    for(i=0;i<3;i++)
    {scanf("%d",&a[i]);
    m=0;if(a[i]>a[m])m=i;
    }printf("%d %d",a[m],m);
    return 0;
}

为什么可以不初始化,让a[3]={0}.什么情况下数组可以不初始化?有些情况下必须要初始化呢?

在 C 语言中,数组并不一定要在声明时就初始化。在这个程序中,你可以声明数组 a 如下:

int a[3];

这样 a 就没有被初始化,它的值是未定义的。你可以通过手动输入每个元素的值来赋值,也可以通过程序来修改每个元素的值。


  • 虽然在这个程序中,你可以不初始化数组 a,但是在某些情况下,你必须要初始化数组。例如,如果你想要将一个数组传递给一个函数,你必须要先初始化这个数组。
  • 在某些情况下,初始化数组可以使程序更易于阅读和理解。例如,如果你的程序中有一个数组,它用于存储某些固定的值,那么你可能希望在声明时就初始化这个数组,以便更容易地看出它所存储的值是什么。

总之,在 C 语言中,数组并不一定要在声明时就初始化,但是在某些情况下,初始化可以让程序更易于阅读和理解,并且在某些情况下,初始化是必须的。

可以初始化呀,但没有必要,后面已经用scanf给它赋值了
如果一个数组没有外界给它赋值,而需要它自身做累加,那肯定要先初始化成0呀,否则从一个随机数进行累加,结果毫无意义

a[3]表示数组中有3个元素,你给一个0.。。不对的哦!!请采纳!!1