CPP学习之——常量指针(8.19)

一 概述

我们可以将指针定义为常量指针,这样该指针不可改变

二 常量指针(变量)

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main()
{
int a=3;
int *const p=&a;
cout<<"a:"<<a<<endl;
a=4;
cout<<"a:"<<a<<endl;
return 0;
}

2.2 输出结果

1
2
a:3
a:4

2.3 说明

  • *const 表示常量指针,这个指针它自身的值是不可以改变的,但是它指向的目标却是可以改变的

三 常量指针(作用在变量上)

3.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
class A
{
private:
int i;
public:
void set(int x){i=x;}
int get() const{return i;}

};
int main()
{
A *p=new A;
cout<<"p:"<<p<<endl;
p=p+1;
cout<<"p:"<<p<<endl;

A *const p1=new A;
//p1=p1+1;
p1->set(9);
cout<<p1->get();
return 0;
}

3.2 输出结果

1
2
3
p:0x337db0
p:0x337db4
9

3.3 说明

  • 说明p1指向的对象的值是可以改变的
  • 这进一步证明了常量指针的特性,常量指针自身不可改变,但是它指向的目标却可以改变。无论这个目标是变量还是对象

四 指向常量的指针(作用在类上)

4.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<iostream>
using namespace std;
class A
{
private:
int i;
public:
void set(int x){i=x;}
int get() const{return i;}

};
int main()
{
A *p=new A;
cout<<"p:"<<p<<endl;
p=p+1;
cout<<"p:"<<p<<endl;

const A* p1=new A;
p1++;
//p1=p1+1;
//p1->set(9);
cout<<p1->get();

return 0;
}

4.2 输出结果

1
2
3
p:0x337dc0
p:0x337dc4
0