C 语言之const 与static 详解 看 到const 关键字,很多人想到的可能是const 常量,其实关键字const 并不能把变量变成常量
在一个符号前加上const 限定符只是表示这个符号 不能被赋值
也就是它的值对于这个符号来说是只读的,但它并不能防止通过程序的内部(甚至是外部)的方法来修改这个值(C 专家编程
也就是说 const 变量是只读变量,既然是变量那么就可以取得其地址,然后修改其值
看来const 也是防君子不防小人啊
:) const 使用情况分类详析 1、const 的普通用法 const int n = 10; 意思很明显,n 是一个只读变量,程序不可以直接修改其值
这里还有一个问题需要注意,即如下使用:int a[n];在ANSI C 中,这种写法是错误的,因为数组的大小应该是个常量,而n 只是一个变量
2、const 用于指针 const int *p; int const *p; int * const p; 在最后的一种情况下,指针是只读的(即 p 只读),而在另外两种情况下,指针所指向的对象是只读的(即*p 只读)
const 是一个左结合的类型修饰符,它与其左侧的类型修饰符一起为一个类型修饰符,所以,int const 限定 *p,不限定p
int *const 限定p,不限定*p
这里有一个简便的区分方法: 沿着*号划一条线,如果 const 位于*的左侧,则 const 就是用来修饰指针所指向的变量,即指针指向为常量;如果 const 位于*的右侧,const 就是修饰指针本身,即指针本身是常量
3、const 用于函数的地址传递参数 void foo(const int *p) 这种形式通常用于在数组形式的参数中模拟传值调用
也就是相当于函数调用者声称:"我给你一个指向它的指针,但你不能去修改它
"如果函数编写