指针常量VS常量指针详解编程语言

 
两个极为容易混淆的概念,确实有必要来把他们区分一下了,参考了某位朋友的内容,稍加修改了一下,因为里面有错误。

这里先要从语法上来区分这两个词的意思:不知道各位还记得中学学习语文的时候讲到的,短语或者连词结构呢?类似主谓结构,动宾结构,等等:

前面的一个通常是修饰部分中心词是后面一个词。

这里的两个词语:常量指针和指针常量。

  
常量指针,表述为“是常量的指针”,它首先应该是一个指针。
指针常量,表述为“是指针的常量”,它首先应该是一个常量。



我再分开细细说明,常量指针,它是一个指针,什么样的指针呢?它是一个指向常量的指针,就是说我们定义了一个常量,比如 const int a=7; 那么我们就可以定义一个常量指针来指向它 const int *p=&a; 也可以分成两步,即 const int *p; p=&a; 那么它有什么作用呢?首先我们来说说常量的属性,因为我们的指针是指向常量的,常量和变量的不同之处在于我们不能对其内容进行操作,或者说就是不能修改他,而我们的指针是什么,它的内容本身是一个地址,设置常量指针指向一个常量,为的就是防止我们写程序过程中对指针误操作出现了修改常量这样的错误,如果我们修改常量指针所指向的空间的时候,编译系统就会提示我们出错信息。所以说,
常量指针就是指向常量的指针,指针所指向的地址的内容是不可修改的。

再来看看指针常量,它首先是一个常量,再才是一个指针。常量的性质是不能修改,指针的内容实际是一个地址,那么指针常量就是内容不能修改的常量,即内容不能 修改的指针,指针的内容是什么?指针的内容是地址,所以,说到底,就是不能修改这个指针所指向的地址,一开始初始化,指向哪儿,它就只能指向哪儿了,不能指向其他的地方了,就像一个数组的数组名一样,是一个固定的指针,不能对它移动操作,比如你使用 p++; 系统就会提示出错。但是它只是不能修改它指 向的地方,但这个指向的地方里的内容是可以替换的,这和上面说的常量指针是完全不同的概念。所以说,指针常量就是是指针的常量,它是不可改变地址的指针,但是可以对它所指向的内容进行修改。举例 int a; int * const p=&a; 这里要注意一下,不能写成 int a; int * const p; p=&a; 这样的形式,系统会报错的,因为常量是不能赋值的,只能初始化。

你也可以定义个一个指向常量的指针常量,就把上面的两个综合一下,表示为:
const int a=7; const int * const p=&a;

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18467.html

(0)
上一篇 2021年7月19日 21:08
下一篇 2021年7月19日 21:08

相关推荐

发表回复

登录后才能评论