Lv.v

导航

main函数外面不能赋值

无聊的时候也会发现问题的.

弄了一年,才发现 在main()外面不能赋值,刚开始,还以为是我编译器有问题.

试了几次才知道, 在main()外面确实 是不能赋值的. 以下是在网上搜到的理由.

 

//-----------------------------------

main函数之前是用来声明和定义全局变量和函数的,并由编译器进行预处理,给那些全局变量和定义的函数分配内存和地址,不能设计可执行代码。 

编译器在编译阶段对main函数之前的全局变量进行内存分配,对定义的函数生成可执行的代码,并保留该函数的地址以供main函数调用,而赋值语句操作是一句可执行代码,又没有类似函数指针的东西供main函数调用,所以只能放在main函数内部进行顺序执行。
  

在多文件组织中,只有在包含main函数的源文件里面的main函数内部才能对变量进行赋值语句的操作,而其它不包含main的源文件这不能进行变量的赋值操作,只能进行变量的声明。

但并不是说在main函数之前就不能对变量进行初始化赋值:可以在定义变量的时候对变量进行初始化赋值。如下:
  int a=10;
  student s1={10};

虽说可以在初始化时赋值,但是如果是个自定义类,在main()外面还是不能赋值.  只有基本类型在初始化时可以赋值.

posted on 2012-06-07 09:46  Lv.v  阅读(1950)  评论(0编辑  收藏  举报