main函数外面不能赋值
无聊的时候也会发现问题的.
弄了一年,才发现 在main()外面不能赋值,刚开始,还以为是我编译器有问题.
试了几次才知道, 在main()外面确实 是不能赋值的. 以下是在网上搜到的理由.
//-----------------------------------
main函数之前是用来声明和定义全局变量和函数的,并由编译器进行预处理,给那些全局变量和定义的函数分配内存和地址,不能设计可执行代码。
编译器在编译阶段对main函数之前的全局变量进行内存分配,对定义的函数生成可执行的代码,并保留该函数的地址以供main函数调用,而赋值语句操作是一句可执行代码,又没有类似函数指针的东西供main函数调用,所以只能放在main函数内部进行顺序执行。
在多文件组织中,只有在包含main函数的源文件里面的main函数内部才能对变量进行赋值语句的操作,而其它不包含main的源文件这不能进行变量的赋值操作,只能进行变量的声明。
但并不是说在main函数之前就不能对变量进行初始化赋值:可以在定义变量的时候对变量进行初始化赋值。如下:
int a=10;
student s1={10};
虽说可以在初始化时赋值,但是如果是个自定义类,在main()外面还是不能赋值. 只有基本类型在初始化时可以赋值.