常量指针和指针常量

因为可以写成很多种方式,很容易记错,这里提供一种高效的方法。


从右边往左边读,遇到变量名(p)就替换成 变量名 is a(p is a),遇到 * 就替换成 point to


一般会有这几种写法:
1. const int p; 常量整数
2. const int * p;
p is a point to int const.
p 是一个指向整型常量的指针。
3. int const * p;
p is a point to const int.
p 是一个指向常量整型的指针。和2一样。
4.int * const p;
p is a const point to int.
p 是一个常量指针,指向整型。
5.const int * const p;
p is a const point to int const.
p 是一个常量指针,指向整型常量。
6.int const * const p;
p is a const point to const int.
p 是一个常量指针,指向常量整型。和5一样

常量指针:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针。
声明:const int * p; int const * p;


ps:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据。只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象。


指针常量:是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变。
声明:int * const p=&a;


ps:指针常量必须在声明的同时对其初始化,不允许先声明一个指针常量随后再对其赋值,这和声明一般的常量是一样的。


其实常量指针,指针常量,也是从右边往左边读。


数组名类似是指针常量,但是不是指针常量。
int a[4];
sizeof(a);&a ,都不是指针常量的结果。结果分别是 16, 和a的地址而不是指向a的指针的地址


参考:
csdn来源
知乎来源
知乎来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • 1、常量指针 定义:只能读取内存中数据,不能修改内存中数据的指针。称为指向常量的指针,简称常量指针 声明:cons...
    una_sheng阅读 113评论 0 0
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,473评论 3 44
  • const关键字用来定义常量,如果一个变量被const修饰,那么他的值就不能被改变。 常量指针 (常量指针是指针指...
    守护者_8013阅读 174评论 0 2
  • 北极熊 大狮指导老师:糖果老师 课前材料准备: 硬卡板、丙烯颜料、画笔、水桶、抹布 教具...
    卜卜紫阅读 208评论 0 0