两个极为容易混淆的概念,确实有必要来把他们区分一下了,参考了某位朋友的内容,稍加修改了一下,因为里面有错误。
这里先要从语法上来区分这两个词的意思:不知道各位还记得中学学习语文的时候讲到的,短语或者连词结构呢?类似主谓结构,动宾结构,等等: 前面的一个通常是修饰部分,中心词是后面一个词。 这里的两个词语:常量指针和指针常量。 再来看看指针常量,它首先是一个常量,再才是一个指针。常量的性质是不能修改,指针的内容实际是一个地址,那么指针常量就是内容不能修改的常量,即内容不能 修改的指针,指针的内容是什么?指针的内容是地址,所以,说到底,就是不能修改这个指针所指向的地址,一开始初始化,指向哪儿,它就只能指向哪儿了,不能指向其他的地方了,就像一个数组的数组名一样,是一个固定的指针,不能对它移动操作,比如你使用 p++; 系统就会提示出错。但是它只是不能修改它指 向的地方,但这个指向的地方里的内容是可以替换的,这和上面说的常量指针是完全不同的概念。所以说,指针常量就是是指针的常量,它是不可改变地址的指针,但是可以对它所指向的内容进行修改。举例 int a; int * const p=&a; 这里要注意一下,不能写成 int a; int * const p; p=&a; 这样的形式,系统会报错的,因为常量是不能赋值的,只能初始化。 你也可以定义个一个指向常量的指针常量,就把上面的两个综合一下,表示为: |
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18467.html