A. 函数中的变量,在哪个范围内有效
如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是该变量只在该复合语句中有效。
在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的。在复合语句内定义的变量只在复合语句范围内有效,只有在本复合语句内才能引用它们,在复合语句以外是不能使用这些比那里的。
函数中的复合语句变量特点:
主函数中定义的变量也只在主函数中有效,并不因为在主函数中定义而在整个文件或程序中有效。
不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰。
全局变量的有效范围为从定义变量的位置开始到本源文件结束。设置全局变量的作用是增加了函数间数据联系的渠道。为了便于区别全局变量和局部变量,在C程序设计人员中有一个习惯,将全局变量的第1个字母用大写表示(非规定)。
B. 一个关于C++全局变量的问题: 为什么在不同的源文件中访问一个头文件中定义的全局静态变量,地址不一样
我刚才遇到了你差不多的问题,我的理解是:因为包含.h文件实际上就是把.h中的内容扩展到每个.c中;也就是说,扩展之后每个.c中都定义了这个变量;但又因为static对全局变量是有作用域限制的,所以他们之间的关系是名字一样,(若没有static则会报错,重定义了)但分配的内存地址是不一样的;通俗的讲:编译器认为每个包含了.h的文件的.c文件都单独定义同名的变量,所以地址是不一样的,还有,定义变量没有在.h里定义的...