Q1,Q2:什么是变量?变量有哪些要素?
A1,A2:
- 其值在其作用域内可以改变的量被称为变量
- 变量有名字、一定的存储空间
- 变量必须要定义,有地址(对应存储空间的首地址)
- 变量依据定义的类型分类,它的大小由类型决定。
Q3:什么是变量值?
A3:
- 变量所对应的存储空间内存放的二进制序列
- 变量的值不会因变量类型改变而改变
- 当变量转换为对应类型时,内存区域的二进制序列以该类型的形式译出来
Q4:变量值举例
A4:变量在内存中存放和它的值没有关系,而是和它的类型相关。一个二进制序列对于计算机本身没有任何意义,只有具体到它的类型或出现在合适的场合时,才能代表具体的意义。
例如:
(1)
int add = 0x12345678;
int *p = (int*)add;
测试对整型和地址类型转换。add是一个整型变量,add里是0x12345678的二进制数,以十进制表现出来。p是一个整形整型指针变量名,p里面是以0x12345678的二进制数的地址。 星号p是通过星号去访问地址0x12345678这个地址处的数据。(int*)add是一个指针,(int*)的作用是把add转化成指向整型变量的指针*。&p是取出整型指针变量p的地址,因为p是一个变量,它也有自己的地址。
(2)
#define PI 3.14
printf("%d\n",PI);
结果为1374389535,这是因为“%d\n”只说明按照整型的内存格式对数据进行读取。
Q5:什么是局部变量?
A5:局部变量又称内部变量,局部变量是在函数内作定义说明的,其作用仅限于函数内。
Q6:什么是外部变量?
A6:
- 全局变量又称外部变量,是在函数外部定义的变量,它不属于哪一个函数,它属于一个源程序文件,其作用域是整个源程序。
- 全局变量说明符extern,一个函数前定义的全局变量,在该函数内使用可不再加以说明.
Q7: const
A7:
- const修饰变量,就意味着变量里的数据可以被访问,不可以被修改。
- 分辨修饰变量的方法:去掉类型后看const修饰谁
Q8:dypedef
A8:
- typedef为C语言的关键字,主要用来给变量一个易记且意义明确的新名字和简化一些比较复杂的类型声明。
- typedef比#define更好,因为#define只是简单的字符串替换。
Q9:枚举是什么?
A9:
enum enum_type_name
{ENUM_CONST_1,ENUM_CONST_2.........}
enum_variable_name;
enu_type_name是类型名,enum_variable_name是该类型下的一个变量,其值只能是大括号中的一个,否则编译会报错。
该类型变量还可以给其中的常量符号赋值,如果不赋值则会从被赋初值的那个常量开始依次加1,如果都没有赋值,它们的值从0开始依次递增1。
Q10.什么是联合体?
A10:
- 联合与结构相似,在结构中各成员有各自的空间,一格结构变量的总长度是各成员长度之和。
- 在联合中,各成员共享一段内存空间,联合变量的长度等于各成员中最长的长度。
- 联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。
.