欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++中 const与指针

程序员文章站 2023-12-27 13:56:03
...

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";

}

运行结果:

c++中 const与指针

 

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

上一篇:

下一篇: