const int*p 与 int const *p与 int * const p与const int * const p的区别(有明显对比,超级详细,超级好记)

简介: 当只有一个const并且const在*左边时:(const int*p 与 int const *p,)*p的值不能改,但是p(地址)能改.我们可以看到第一,三张图片第五行*p下面有红线表示错误.而第二,四张没有红线的地方表示正确.所以我们可知道const int*p 与 int const *p是相同的只是书写方法不同.

小编先和读者们说一下结论:

当const在*左边时:*p不能改,p能改.

当const在*右边时:*p能改,p不能改.

当const在*左边和右边都存在时:*p和p都不能改.

原因如下:

我们先定义一个变量和指针

(1)当只有一个const并且const在*左边时:

(const int*p 与 int const *p,)*p的值不能改,但是p(地址)能改.我们可以看到第一,三张图片第五行*p下面有红线表示错误.而第二,四张没有红线的地方表示正确.所以我们可知道const int*p 与 int const *p是相同的只是书写方法不同.

77bd1684747b5d151533f4ba2e736724_879b6e8107dd4ff2bbd19c82294a47cb.png

fe4f6f7dec865f3bd11aec8bf5d0c61e_cf4ee5febbe44367a757727bb18bf1a5.png

(2)当只有一个const并且const在*右边时:

(int * const p)*p的值能改,但是p不能改.如图

15b02125a94e421de4f30c22de94c657_cf44003bae5f454dbd5dc47a0bf19782.png


(3)当const在*左边和右边都有时:

(const int * const p)*p和p都不能改,如图:

33bde26a11faacef340f622a5438fe38_49360edefadb401a9ab1440e9db544a2.png

48f2c560305afaf8f59e01ca7794aa3e_af4e7f45d16f42ba8cf8869d34f0227b.png

还有不理解的小伙伴欢迎评论或者私聊.  


目录
相关文章
|
3月前
|
缓存 安全 Java
Java的Integer和int有什么区别?
Java的Integer和int有什么区别?
30 1
|
3月前
|
存储 编译器 程序员
int 和 long 的区别
int 和 long 的区别
|
12月前
|
存储 Java 编译器
|
3月前
|
存储 C语言
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
49 0
|
10月前
|
C语言
const int *和int * const的区别【C语言/指针】
const int *和int * const的区别【C语言/指针】
43 0
|
10月前
|
存储 缓存 Java
【Java】int和Integer的区别?为什么有包装类?
【Java】int和Integer的区别?为什么有包装类?
|
12月前
|
C++
C++ int const 和 const int 的区别
C++ int const 和 const int 的区别
126 0
|
存储 关系型数据库 MySQL
MySQL 中 int (10) 和 char (10) 和 varchar (10) 的区别
MySQL 中 int (10) 和 char (10) 和 varchar (10) 的区别
141 0
|
存储
int与bigint的区别
int与bigint的区别
183 0
|
存储 Java
Java Int与Integer的区别
Java Int与Integer的区别
56 0