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";
}
运行结果:
可以看出常指针代表其地址是不可改变的,但是指向对象的值确是可以改变的,指向常量的指针,其常量不能改变但是其地址确是可以改变的。