c++中 const与指针

const与指针这块自己一直理解的朦朦胧胧的,今天在vs上专门做个一些测试,特此记录。

const与指针一般有两种情况:,一是修饰指针指向的对象,二用const修饰指针.

如 :

int age = 23;
const int *pt = &age;

该声明指出,pt指向一个const int,因此不能用pt来修改这个值,即*pt的值为const,但是并不代表它指向的值实际就是一个常量,也就是说pt的地址是可变的:

int age = 23;
const int *pt = &age;
int sage = 30;
*pt = sage;//错误,*p不能直接修改
pt = &sage;//正确

此时*pt的值为30。

接下来看第二种

int age = 23;
int *const pt1 = &age;
int sage = 30;
pt1=&sage//错误,pt2的地址不能修改
*pt1=sage //正确

可以看出pt1的地址是不能够被修改的,但是却可以修改其指向的值,此时*pt1=30

下面看一下整体的运行结果:

#include<iostream>
using namespace std;
int main()
{
	int age = 23;
	const int *pt = &age;
	int *const pt1 = &age;
	cout << "pt的值:" << *pt << "\n";
	cout << "pt的地址:" << pt << "\n";
	cout << "pt1 的值:" << *pt1 << "\n";
	cout << "pt1的地址:" << pt1 << "\n";
	int sage = 30;
	//pt1=&sage  错误,pt2的地址不能修改
	*pt1 = sage; //正确
	// *pt = sage; 错误,*p不能直接修改
	pt = &sage;//正确
	cout <<"\n"<< "/*         修改后的值和地址  */ "<<"\n";
	cout <<"\n"<< "pt的值:" << *pt << "\n";
	cout << "pt的地址:" << pt << "\n";
	cout << "pt1 的值:" << *pt1 << "\n";
	cout << "pt1的地址:" << pt1 << "\n";

}

运行结果:

 

可以看出常指针代表其地址是不可改变的,但是指向对象的值确是可以改变的,指向常量的指针,其常量不能改变但是其地址确是可以改变的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值