指针常量与常量指针的区别

int a,b;

int * const p1 =&a;   //p1为指针常量

int const *p2 =&b;   //p2为常量指针

 

识别常量指针与指针常量,记住下面三句话:

  指针(*)与常量(const)谁在前先读谁;

  指针(*)在前(int *const p1=&a)表示指针不能变,不能指向其他地址,但可以通过指针改变所指地址的值;

  常量(const)在前(int const *p2=&b) 表示不能通过指针改变所指地址的值,但是指针可以指向其他地方。 

例子:

 

#include<iostream>
using namespace std;
int main(){
	int a=1;
	int b=2;
	int const *p1=&b;	//常量指针p1 
	cout<<"*p1= "<<*p1<<endl;    //p1指向b,输出b的值
	p1=&a;				//可以改变常量p1指针指向其他位置 
	cout<<"*p1= "<<*p1<<endl;    //p1现在指向a,输出a的值
	int * const p2=&b;	//指针常量p2 
	cout<<"*p2= "<<*p2<<endl;    //p2指向b,输出b的值
	*p2=3;				//可以通过指针常量p2改变所指对象的值 
	cout<<"*p2= "<<*p2<<endl;    //p2还指向b,不过b的值变成3
	return 0;
}

 

2.返回常量的函数,可以是常量指针,指针常量,常量,形式:
const type* funcname(type1 arg1,type2 arg2, ..)
type* const funcname(type1 arg1,type2 arg2, ..)
const funcname(type1 arg1,type2 arg2, ..)

 

3常量指针与指针常量至今相互赋值

  常量指针和指针常量都可以赋值给常量指针对象,常量指针对象可以进行p++操作,不能通过*p操作改变所指对象。
  常量指针和指针常量都可以赋值给指针常量,但是指针常量只能进行*p操作,不能进行p++操作。
  普通类型的返回常量的函数,目的是为了让成员函数返回值之间不能进行运算,防止产生丑陋的代码

转载于:https://www.cnblogs.com/xiaoZQ/p/5210392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值