1.C语言中指针与数组的区别
数组要么在静态存储区被创建(如全局数组) ,要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变” ,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。
2.关键字const的含义及其作用
const是一个修饰符,被修饰的对象或者变量是不可修改的,也就是说const可读不可改,const在谁的后面const就修饰谁,如果const在最前面,那么将const后移一位即可,二者是等效的。
const有以下这几个作用:(1)如果我们想要阻止一个变量被改变,那么我们就可以使用const关键字来修饰它,由于被const修饰的对象或者变量是可读不可写的,因此我们在使用const的使用要对所修饰的对象或者变量进行初始化,否则以后没有机会再改变他的值。(2)对于指针来说,const可以修饰指针本身,也可以修饰指针所指的数据,也可以修饰两者。(3)在对一个函数进行声明的时候,可以使用const对形参进行修饰,表明它是一个输入参数,在函数的内部不可写。(4)对于类的成员函数,如果被const修饰,表明它是一个常函数,不能修改类的成员变量。(5)对于类的成员函数,有时候必须指定其返回值类型是const,这样使得该函数的返回值不是“左值”。
const有以下这几个作用:(1)如果我们想要阻止一个变量被改变,那么我们就可以使用const关键字来修饰它,由于被const修饰的对象或者变量是可读不可写的,因此我们在使用const的使用要对所修饰的对象或者变量进行初始化,否则以后没有机会再改变他的值。(2)对于指针来说,const可以修饰指针本身,也可以修饰指针所指的数据,也可以修饰两者。(3)在对一个函数进行声明的时候,可以使用const对形参进行修饰,表明它是一个输入参数,在函数的内部不可写。(4)对于类的成员函数,如果被const修饰,表明它是一个常函数,不能修改类的成员变量。(5)对于类的成员函数,有时候必须指定其返回值类型是const,这样使得该函数的返回值不是“左值”。
3.请说出const与#define相比,有何优点?
const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
1)const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
4.什么是预编译?何时需要预编译?
什么是预编译:
- 预编译又称为预处理 , 是做些代码文本的替换工作。
1 )宏定义
2 )文件包含
何时需要预编译:
- 总是使用不经常改动的大型代码体。
- 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个“预编译头”