c中的初始化和赋值

时间:2015-03-18 10:32:54

标签: c

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

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

3 个答案:

答案 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()
  {
  }

我希望这会有所帮助。