美文网首页
指针常量和常量指针

指针常量和常量指针

作者: zhengaoly | 来源:发表于2021-12-15 13:37 被阅读0次
(1)const int p; 

(2)const int* p; 

(3)int const* p; 

(4)int * const p;

(5)const int * const p;

(6)int const * const p;

第一种是常量整数,没什么好说的。

后面五种是指针,有一个简便的办法记忆。

从右往左读,遇到p就替换成“p is a ”遇到*就替换成“point to”。

比如说,

(2)读作:p is a point to int const p是一个指向整型常量的指针(常量指针)。

(3)读作:p is a point to const int.意思跟(2)相同。

(4)读作:p is a const point to int.p是一个指针常量,指向整型。

(5)读作:p is a const point to int const.

(6)读作:p is a const point to const int.(5)和(6)的意思相同,p都是指向常量的指针常量,指向整型。

这种方法来源于《c primer plus》,这里也向c初学者推荐此书。

指针常量

落点在常量上,这说明了指针常量是一个常量,类型是指针类型。 如果写int const a = 5那么a就是一个整型常量(尽管我们一般不是这么描述),所以指针常量应该如下定义,

int *const p = #

p is a const point to int

p是一个const指针(地址不可变,即不可以更改地址),指向int变量

从右向左看,离p最近的是const,首先说明了p是一个常量。在这里,const是一个顶层const因为它本身是一个常量,我们初始化的时候将p指向num,完成了初始化, 所以常量p不能在指向其他的变量(或是常量),也就是说们再写p = &num2;编译是不会通过的。

常量指针

落点是指针,说明常量指针是一个指针,不同的是它指向的是一个常量。

const int a = 5;
const int * p = &a;

从右向左看首先是一个*(指针的标志),首先说明p是一个指针,再向左看,是一个指向常量的指针,
所以p指向的是一个常量我们就不能更改*p的值,但是p本身不是一个常量所以我们可以改变p 指向的变量。

int const *p = &a;
需要注意的是这还是一个常量指针,从右向左看与上面的结果是一致的。

*p = 6(不合法)

int b = 6;
p=&b;(合法)

相关文章

  • C++ 指针常量、常量指针和常指针常量

    参考:C++ 指针常量、常量指针和常指针常量

  • 5.const与指针

    1.const修饰指针-常量指针 2.const修饰常量-指针常量 3.const修饰指针和常量 代码如下

  • 指针,引用和常量

    常量指针和指针常量 常量指针是指向常量的指针,如:const int* p其中p是一个指针,指向了一个常量,也就是...

  • 常量指针和指针常量

    const关键字用来定义常量,如果一个变量被const修饰,那么他的值就不能被改变。 常量指针 (常量指针是指针指...

  • 常量指针和指针常量

    使用指针必须清楚,指针不是地址,是用来存放地址的,指针本身也是有地址的! 指针常量:不能通过指针修改值 const...

  • 指针常量和常量指针

    参考博客: https://blog.csdn.net/xingjiarong/article/details/4...

  • 指针常量和常量指针

    指针常量 指针常量指的是这个指针本身是常量,一旦被初始化,后面不能够再修改这个指针, 比如: 一般而言,const...

  • 指针常量和常量指针

    指针常量:(指针变量前加const) int *const p;指针本身是一个常量。在声明的时候初始化,里面的值(...

  • 常量指针和指针常量

    因为可以写成很多种方式,很容易记错,这里提供一种高效的方法。 从右边往左边读,遇到变量名(p)就替换成 变量名 i...

  • 常量指针和指针常量

    1、常量指针 定义:只能读取内存中数据,不能修改内存中数据的指针。称为指向常量的指针,简称常量指针 声明:cons...

网友评论

      本文标题:指针常量和常量指针

      本文链接:https://www.haomeiwen.com/subject/fmfpfrtx.html