c中的初始化和赋值

Sta*_*ack -3 c

如果分配可以多次完成,那么为什么它会显示错误.如果相同的代码在main中,则没有显示错误.

#include <stdio.h>
  int arr[2]; // array elements are initialized as zero
  arr[0]=5;
  arr[1]=10;
int main()
{ 
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

hac*_*cks 5

这两行

arr[0]=5;   // Assignment. Not initialization.
arr[1]=10;  // Assignment. Not initialization.
Run Code Online (Sandbox Code Playgroud)

是无法在函数外执行的语句.在全球空间中,只有声明和定义是有效的.

int arr[2];  
Run Code Online (Sandbox Code Playgroud)

是一个定义,它是有效的.Brace初始值设定项可用于初始化arr所需的值

int arr[2] = {5, 10};  
Run Code Online (Sandbox Code Playgroud)