const的使用

来源:互联网 发布:泽野螳螂 知乎 编辑:程序博客网 时间:2024/05/29 08:01
话说有这么一道辨别题(如下),指出这三者的区别。

①char const *p;

②const char *p;

③char  *const p;

const,表示只读,不可被改写。这三者都带有const,想区别它们,很简单,只需要看看变量名(也就是上面的P)

离*比较近还是const比较近,如果离*比较近的话,那么说明该变量是一个指向常量的指针,该指针的内容是可改

变的(即可改变指针指向的内存区域),比如上面的①和②,表示p是一个指向常量的指针,该指针p是可以指向其

它区域的,比如给p赋新的值:p = buff;(buff是一个数组名)。

而如果指针变量名离const比较近的话,那就不一样了,它表示该指针是一个常量指针,即该指针只能在声明的时候

被赋初值,而不能声明之后,再给指针赋值,那样子编译的时候,会报错(提示该指针是只读指针,不能被改写)。

当然,该指针所指向的区域的内容是可被改写的,如上面的③,表示p是一个常量指针,若对其进行以下声明:

char *const p = buff;(buff是一个数组名)

那么p不能再赋任何其他值,但对于buff则可以随意修改其内容。

总结:

归根到底,这三者,只有两种情况(①和②是一样的):

一个是指针所指向的区域的内容不能被改写,为只读,但指针能够修改指向的区域;

一个是指针所指向的区域不能被改写,为只读,该该指针所指向的区域的内容能够被改写。
0 0
原创粉丝点击