指针常量和常量指针的区别

文章目录

  • 指针常量
  • 常量指针
  • 即是指针常量又是常量指针

指针常量

指针常量的本质是常量,表示的是 这个指针所指向的地址不能发生改变。即指针变量的值(即地址值)不能发生修改。但是指针所指向的那块内存里的值是可以修改的。
注意:指针本身是变量,但是这里说的 指针常量 ,指的就是 指针变量里的值(即所指向的地址值)不能发生改变。
例如:
int b = 5;
int* const a = &b;// a是一个指针常量
一句话总结:指针变量里的值(即地址值)不能发生修改。
可以这里记忆 const关键字在指针变量名a的前面,类似 于 const int c = 3;//c是一个int型常量,c的值一旦初始化后,将不能修改。
而这里的指针变量a也是,它里面的值也不能发生改变。
指针常量和常量指针的区别_第1张图片

常量指针

常量指针的本质是指针,表示的就是说指针所指向的那块内存空间的内容不可以通过此常量指针来修改。但是此常量指针的指向可以被修改。常被用于函数的参数中,好处是 只读,防修改。
例如:
int d = 6;
const int* e = &d; //e是一个常量指针
*e = 7;// *e作为左值 。报错,不允许通过 常量指针 进行修改。因为 对 *e加了const修饰。
int f = *e;//*e作为右值。这个可以,常量指针可以读取所指向的内存空间的储存内容
注意: 当 *e作为左值时,作用相当于 变量d 所表示的那块内存,给变量d所表示的那块内存空间赋值。当 *e作为右值时,作用也相当于变
量d,是取出变量d中的值。
int g = 8;
e = &g; //可以,常量指针的指向可以发生改变
指针常量和常量指针的区别_第2张图片

即是指针常量又是常量指针

例如:
int a = 100;
const int* const b = &a;// b即使指针常量又是常量指针,兼具上方两种的特性
注意: 形如 const int d = 5; &d的值只能赋值给 const int 类型的指针。即常量指针

你可能感兴趣的:(C,and,C++的笔记,c++)