7.10.1全局变量和局部变量
这里主要是注意,全局变量,全局静态变量,局部变量,局部静态变量。
static修饰的是静态变量和全局变量,放在程序的静态存储区,局部变量放在堆栈区。
生命周期全局和静态的都是与程序共存亡,局部非静态则在生存在声明的作用域。
static全局变量不能被其他文件所引用。static局部变量初始化只在第一次时生效。
int,float类静态变量不初始化的话,会默认为0
7.10.2局部变量与全局变量
局部变量可以和全局变量重名,会屏蔽全局变量,如果要使用全局变量可以使用::的限定符。
7.10.3理解复杂的声明
两个例子理解下:
1.int (*p[])(int );p是一个数组,存储着参数为int,返回值为int的函数指针。
2.int(*p())[10];p是一个函数,返回值是一个指向int[10]的指针。
7.10.4变量定义和声明
定义:分配了内存地址,不用extern的时候,或者即使用了extern但后面跟了初始化的时候。
声明:描述存在这样的变量。用extern声明的时候。
7.10.5 不用temp,怎么交换两个变量值
int a=1,b=2;
a=a+b;
b=a-b;
a=a-b;
不过这种可有可能溢出的。用异或的方法
a=a^b;
b=a^b;
a=a^b;
7.10.6 C与C++变量初始化有什么不同。
C中 只能用常量对全局变量和静态变量初始化,因为在编译期就分配空间和初始化,而其他变量是在编译期间分配空间,在运行时初始化。
C++中允许使用变量初始化,但用来赋值的变量必须在此前声明。