指针与const(此节只适用于C99)
指针 是const
- 表示一旦得到了某个变量的地址,不能指向其他变量
- int *const q = &i;//q是const
- *q = 26;//OK
- q++; //ERROR
所指是const
- 表示不能通过这个指针去修改那个变量(并不是使得那个变量成为const)
- const int *p = &i;
- p = 26; //ERROR! (p)是const
- i=26;//OK
- p=&j;//OK
判断以下这些是什么意思?
int i;
const int* p1 = &i;
int const* p2 = &i;
int *const p3 = &i;
判断那个被const了的标志是const在*的前面还是后面
转换
-
总是可以把一个非const的值转换成const的
void f(const int* x);
int a = 15;
f(&a);//OK
const int b = 1;
f(&b);//OK
b = a + 1;//ERROR!
- 当要传递的参数的类型比地址大的时候,这是常用的手段:既能用比较少的字节数传递值给参数,又能避免函数对外面的变量的修改
const 数组
- const int a[] = {1,2,3,4,5,6,};
- 数组变量已经是const的指针了,这里的const标明数组的每个单元都是const int
- 所以必须通过初始化进行赋值