😐
本文在包含在我的另外一篇博文中
一定不能错过的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;
}
只能修改p所指向物的值,不能修改p的指向物,
2.2. int const * p; 等于const int * p;
int main()
{
int a = 10;
int b = 20;
int const *p = &a;
*p=100;
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;
p = &b;
}
既不能修改p的指向物,也不能修改p所指向的值
const和define在作用上很像。但也有很多不同 1.#define是预编译指令,而const是变量的定义, 2.define是在预处理时展开,而const是在编译时处理。 3. const定义的是一个变量,而define定义的是一个常量, 4. define定义的宏在预编译之后就不存在了,也没有占用空间,而const修饰的常变量本质是一个变量,它具有类型,占有空间,可以说常变量是有名字的常量,有名字是为了在程序中便于引用,从使用者的角度,它除了不能作为数组的长度(c语言中),它具有宏的优点, 所以在define和const都能使用时,首先考虑const,define定义的为常量,const定义的是变量,有数据类型,编译器会对它进行安全检查
|