1.局部变量和全局变量的区别?
局部变量保存在栈,全局变量保存在数据区;初始化全局变量为0,局部变量为垃圾值;重名时用局部变量,全局变量是程序结束才释放,局部变量是函数结束就释放。
2.数据类型的判断
先确定它是一个变量,再确定它保存什么类型的值,保存什么类型的值它就是什么变量;
先确定它是一个指针变量,再确定它保存什么类型的地址,保存什么类型的地址它就是什么指针变量;
例如:int *a 是整型指针变量
int *(*a) 整型指针的指针变量
3.数据类型及大小
int = 4 字节
char = 1字节
short = 2 字节
long = 4 字节
float = 4 字节
double = 8 字节
4.为什么指针的长度是固定的?
指针保存的是地址,地址的长度由操作系统决定,在32位操作系统中指针的长度都是4字节
5.变量的特点?
占用内存的存储空间,变量的作用域,变量的存储区域
6.怎么区分定义和声明?定义:int i;
声明:extern int i;
7.static关键字作用
1. 修饰局部变量,延长变量生命周期,直至程序运行完释放。
2. 修饰全局变量,这个全局变量只能在本文件访问。
3. 修饰函数,只能在本文件中调用,不能在其他文件中调用。
4. 数据保存在静态数据区。
8.register关键字作用
请求编译器尽可能地将变量保存在cpu内部寄存器中,从而省去了从内存中抓取数据的时间,提高程序运行效率。一般将频繁被访问的变量用regeist修饰,如循环变量。
说明:
1.只能修饰局部变量,不能修饰函数和全局变量。
2.不能用&获取变量地址
3.register所修饰的变量一定是cpu所能接受的数据类型。
9.i++和++i注意事项
i++先使用,后自加。
++i先自加,自加完毕后再做相应的运算。
++i被替换成变量名;
i++被替换成数值。
10.typedef作用
给变量重命名。
作用:
1. 提高代码的可读性;
2.提高代码的移植性;