一、为什么会有const,它有什么用?
加了const的变量只可读不可写。
如:指针常常是边读边移动,而不是边写边移动,许多函数参数是只读不写的。
一、const的不同位置有什么区别?
char *const cp; //到char的const指针
char const *pc1; //到const char的指针
const char *pc2; //到const char的指针(后两个声明是相同的)
技巧:从右向左读的记忆方式:
cp is a const pointer to char. 故pc不能指向别的字符串,但可以修改其指向的字符串的内容
pc2 is a pointer to const char. 故*pc2的内容不可以改变,但pc2可以指向别的字符串
举例:
对于常量指针,不能通过该指针来改变所指的内容。即,下面的操作是错误的:
int i = 10;
const int *pi = &i;
*pi = 100;
因为你在试图通过pi改变它所指向的内容。但是,并不是说该内存块中的内容不能被修改。我们仍然可以通过其他方式去修改其中的值。例如:
通过i直接修改:
i = 100;
或者使用另外一个指针来修改:
int *p = (int*)pi;
*p = 100;