如果分配可以多次完成,那么为什么它会显示错误。如果相同的代码在main中,则没有显示错误。
#include <stdio.h>
int arr[2]; // array elements are initialized as zero
arr[0]=5;
arr[1]=10;
int main()
{
return 0;
}
答案 0 :(得分:5)
这两行
arr[0]=5; // Assignment. Not initialization.
arr[1]=10; // Assignment. Not initialization.
是不能在函数外执行的语句。在全球空间中,只有声明和定义是有效的。
int arr[2];
是一个定义,它是有效的。大括号初始值设定项可用于初始化arr
所需的值
int arr[2] = {5, 10};
答案 1 :(得分:3)
在全局范围内,赋值(initlialization)只能通过括号括起的列表来完成。您不能在全局范围内使用语句来单独初始化或分配变量。
为了解决这些问题,您需要提出以下陈述
arr[0]=5;
arr[1]=10;
在函数体内。
答案 2 :(得分:0)
如果您不熟悉编程,您应该知道编译始终从主函数开始。主函数之外的任何代码都被称为&#34;无法访问的代码&#34;除非它被主函数调用。
例如,您可以在main函数之外使用另一个函数(使用新变量),但除非您在main()函数中调用它,否则不会执行它。
变量总是需要在函数内部,否则它们将无法访问。
我对此规则的唯一例外是常量。您可以在main()函数之前使用#define但不在main()之后使用#define分配常量。例如:
#define LENGTH 100
#define WIDTH 50
void main()
{
}
我希望这会有所帮助。