普通指针、指针常量、常量指针、指向常量的常量指针

指针常量:
指针常量仅指向唯一的内存地址,一旦被初始化后,就不能再指向其他地址。简单说就是指针本身是常量。
但可使用解引用符:*p = 10;
声明格式:【指针类型】 const 【变量名】 如:int* const p

常量指针:
指针所指向的内容是个常量。不能使用解引用符去修改指向的内容。但指针自己本身却是个变量,
因此它仍然可以再次指向其他的内容(其他地址): p = &j;
声明格式:const【指针类型】 【变量名】 如:const int *p

指向常量的常量指针:
把指针常量和常量指针结合在一起,即指针自己本身是一个常量,它指向的内容也是一个常量。
因此,
1.不能使用解引用去修改指向的内容
2.不能重新指向新地址。

	声明格式:const【指针类型】const 【变量名】
	如: const int* const p5

代码简述:

#include "iostream"
using namespace std;
int main()
{

 int a = 10;
 int b = 20;

 //普通指针:
 //可以指向其他地址
  int *p1 = &a;
  p1 = &b;
  cout<<"普通指针p1 = "<< *p1 << endl;
  //可以解引用
  *p1 = 100;
  cout<<"普通指针p1解引用 = "<< *p1 << endl;
  
/*

指针常量:
	指针常量仅指向唯一的内存地址,一旦被初始化后,就不能再指向其他地址:指针常量---指针本身已是常量。
	声明格式:【指针类型】 const 【变量名】
*/
 //声明指针常量,并初始化
  int* const p2 = &a;
 //  p2 = &80;  // error,指针常量不能再指向其他地址
  cout<<"指针常量p2 = "<< *p2 << endl;

//可以对指针常量使用解引用符修改内容
  *p2 = 200;//相当于a=100,解引用,修改指针常量所指向的内存空间的值
 cout<<"指针常量p2解引用 = "<< *p2 << endl;


/*

常量指针:
	指针所指向的内容是个常量。不能使用解引用符去修改指向的内容。但指针自己本身却是个变量,因此它仍然可以再次指向其他的内容。
    声明格式:const【指针类型】 【变量名】

*/

 int i = 8;
 int j = 9;

 //声明常量指针
 const int *p3 = &i;
 //*p3 = 0; //error,不能解引用去修改所指向的内容

 p3 = &j; //但可以再指向其他地址
 cout<<"指针常量p3 = "<< *p3 << endl;

/*

指向常量的常量指针
    把指针常量和常量指针结合在一起,即指针自己本身是一个常量,它指向的内容也是一个常量。
	因此它既不能使用解引用去修改指向的内容,也不能重新指向新地址。
	声明格式:const【指针类型】const 【变量名】

*/

  int m = 7;
  int N = 10;

  //声明指向常量的常量指针
  const int* const p5 = &m;
  //*p5 = 0; //error,不能修改指向的内容
  // p5 = &N; //error,不能重新指向新地址
  cout<<"指向常量的常量指针p5 = "<< *p5 << endl;


	system("pause");//暂停,窗口不会一闪而过
	return 0;
}

运行结果:
在这里插入图片描述

结语:谢谢!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随心漂流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值