1.已经赋值的字符串指针“*str="hello world"”,可以再将“*str="goodbye world"”赋值给他吗?
答:不能,错误有二。
(1)不能向常量里写数据。“hello world”是字符串常量,该字符串空间里的常量不能被改变。
(2)指针变量放地址,字符串是以首地址为地址。这里将一个字符串地址想要写到一个字符 的地址里了。
2.局部变量的特点
答:(1)复合语句里也可以定义变量,且变量可以与函数内的变量定义相同,但其作用周期在复合语句内部并且可以屏蔽主函数的定义变量。
(2)没有特别声明时,主函数内的变量也是局部变量,只能在该函数内使用,且不能调用其他函数内的变量。
(3)形参变量与实参变量均属于局部变量。
3.基本类型有哪些?
答:整型:int,short int,long,unsigned int,unsigned short int,unsigned long;
浮点型:float,double,long double;
指针类型:常用;
枚举类型:用于变量的可能值较少时;
void类型:可以表示没有数据也可以表示任意类型数据;
4.static的修饰变量特点?
答:(1)静态局部变量如果没有初始化,整型变量是0,字符变量是“\0”;static是静态的在运算过程中经过运算后值不再改变,将继续进行下一次运算;
(2)static对全局变量进行修饰过后会改变其作用域;
(3)static修饰函数时也会改变其作用域。
5.extern的主要特点。
答:可以修饰变量和函数,extern在声明变量时可以不指定类型。
6.当const遇到指针与指针数组时该如何判断?
答:(1)const int *p; 这里的p所指向的空间里的值不变;
(2)int * const p; 这里的p所指向的地址不变;
(3)const struct devices dev[5];
struct devices const * dev[5]; 这里都是数组里的值不变。
7.栈的存储特点?
答:先进后出。
8.何时用寄存器变量,要注意什么?
答:(1)在大量繁琐操作时,且要求变量个数要少;
(2)要声明的寄存器变量的类型要是CPU寄存器所能接受的类型;
(3)由于寄存器变量没有内存地址,不能对其用取地址符号“&”。
9.typedef与宏。
答:typedef目的是为了给变量起一个好记、意义明确的新名字从而简化类型声明。
在实际运用时typedef是一个新的类型而宏只是代替运算。
10.枚举与宏。
答:(1)宏常用在预编译阶段进行简单替换,枚举在编译时就确定其值。
(2)编译器可以调试枚举常量而宏不行;
(3)枚举一次可以定义大量常量而宏只能定义一个。