文章目录
😐 本文在包含在我的另外一篇博文中 一定不能错过的c语言基础(超级详细).
const
1.cost修饰变量
可以修饰全局变量,也可以修饰局部变量(修饰之后,变量只可读,不可写)
int const a = 1;
const int a = 1;
cost修饰变量时,必须在定义时就赋值
这两个等价
int main()
{
const int a = {1,2,3};//也可以修饰数组
}
2.const 修饰指针
2.1. int * const p;
int main()
{
int a =10;
int * const p = &a;
*p = 20;
int b;
p = &b;//ERROR
}
只能修改p所指向物的值,不能修改p的指向物,
2.2. int const * p; 等于const int * p;
int main()
{
int a = 10;
int b = 20;
int const *p = &a;
*p=100;//ERROR
P = &b;
}
能修改p所指向物,而不能修改p所指向物的值
2.3. const int * cnost p;
int main()
{
int a = 10;
int b = 20;
const int * const p = &a;
*p = 100;//ERROR
p = &b;//ERROR
}
既不能修改p的指向物,也不能修改p所指向的值
const和define在作用上很像。但也有很多不同
1.#define是预编译指令,而const是变量的定义,
2.define是在预处理时展开,而const是在编译时处理。
3. const定义的是一个变量,而define定义的是一个常量,
4. define定义的宏在预编译之后就不存在了,也没有占用空间,而const修饰的常变量本质是一个变量,它具有类型,占有空间,可以说常变量是有名字的常量,有名字是为了在程序中便于引用,从使用者的角度,它除了不能作为数组的长度(c语言中),它具有宏的优点,
所以在define和const都能使用时,首先考虑const,define定义的为常量,const定义的是变量,有数据类型,编译器会对它进行安全检查