1.变量的存储方式
变量的存储方式分为两种:静态存储方式和动态存储方式。静态存储方式是在程序运行期间固定地分配存储空间的方式,而动态存储方式是在程序运行期间动态地分配存储空间的方式。
静态存储的变量包括:全局变量,加static的局部变量
动态存储的变量包括:未加static局部变量,函数形式参数,函数调用时的现场保护和返回地址等
2.static
加static的局部变量:属于静态存储方式,它是在编译的时候赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数是不再重新赋初值而只是保留上次函数调用结束时的值。注意:赋初值的形式是static int a=1,而不是static int a;a=1(如果不赋初值的话,编译时自动赋值为0或者空字符,而对自动变量来说,不赋初值则它的值是一个不确定的值)
加static的全局变量:未加static全局变量的作用范围是工程的全部文件,比如说在文件file1中定义了全局变量a,可以在file2文件中用extern a来声明a变量,这样在file2文件中也可以用a了。而加了static的静态全局变量的作用范围只限于定义这个静态全局变量的文件中,不能跨文件使用(加了static的函数称为内部函数,跟静态局部变量一样,它的作用范围也只是限于定义它的那个文件)。
3.inline
inline 定义函数称为内联函数,函数的代码被放入符号表中,在使用时直接进行替换(像宏一样展开),没有了调用的开销,效率也很高。 注意:内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在任何调用它的地方展开,如果函数太复杂,代码膨胀带来的恶果很可能会大于效率的提高带来的益处。关于inline在c++中的作用就不在这里说了。
4.带缺省参数的函数
如果这种函数使用的的好的话,可以减少函数的重载。比如int max(int a,int b,int c=-32768),这样在调用时可以写成max(100,65),c的值自动取为-32768这个最小的整数。也可以调用时用三个参数max(12,345,32),所以这个缺省参数的函数可以从三个数中取最大值也可以从两个值中取最大值,避免了函数的重载。
5.变量的引用类型
int &b=a,这就声明了b是a的引用,注意:上述声明中&代表的是引用声明符,而不是取地址符号。b也可以称为是a的别名,b与a共用内存。