int const*与int * const

1. int const*

int const *p与const int *p意义一样。

从右往左看,进行解析,这个p是个指针,而且是个常量,类型是整型。可称为指针常量

特点:*p指向一个整型的常量,但是不能通过修改p所指向内存单元的值,只能修改所指向的对象,或者通过改该对象的值。
such as:

    int a = 10;
	int b = 20;
	int c = 55;
	int const *p = &a;
	const int *q = &b;     //与上面一样
	p=&c;						//可以通过,允许修改所指向的对象
	q=&a;
	*p=34;                  //不允许通过,无法通过该指针修改内容
	*q=123;				//同上 
	                  
	  p=q;					//可以通过

	 p=&a;					//重新指向a,通以修改a的值,修改p中的值
	 a=456;			

2. int * const p

从右往左看,一个常量p被定义为整型指针。可称为常量指针

特点:常量p是一个整型类型的指针,它能通过指针来进行修改其中的内容,但当它已经指向一个地址之后,便不能再指向其他地址,和int const*有区别

    int a = 10;
	int b = 20;
	int c = 55;
	int * const p = &a;
	int *const q = &b;
	*p=34;							//可以将p所指向的地址进行修改

	a=894;							//也可以通过修改a的值,使p的值进行更改

	p=&c;							//该操作不被允许,已经指向一个地址,无法指向其他地址
	
	p=q;								//该操作也不被允许,除非p还没进行初始化

3. const int* const p

从右往左看,结合上面两个,可以看做常量指针常量,即常量p是一个整型的指针,而且这个指针还是个常量

特点:结合上面两个,将两个都不能允许的操作,在这也全部不允许——不允许当p初始化后,再将p指向其他地址;不允许通过修改指针p的值

    int a = 10;
	int b = 20;
	int c = 55;
	const int* const p = &a;
	const int* const q = &b;
     
     *p=456;							//该操作不被允许
     p=&c;								//该操作不被允许
     
	a=333;								//允许该操作,进行修改值
	const int* const r=p;		//允许该操作
  • 24
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值