4134人加入学习
(13人评价)
C++编程系列 第二季函数和类

制作于2018.4.2

价格 免费

辅助学习顶层const、底层const

https://www.bilibili.com/video/BV1xY411t75L

[展开全文]

const形参和实参

顶层const:表示任意的对象是常量。

底层const:与指针和引用等复合类型有关。

对指针而言,顶层const表示指针本事就是个常量,而底层const表示指针所指的对象是一个常量。

int i = 22;

const int ci = 20; //顶层const,不能修改 ci 的值

const int *p1 = &ci; //底层const,允许修改 p1 的值,但是不能通过 *p1 修改 ci 的值。

int *const p2 = &i; //顶层const,不能修改 p2 的值,但是允许通过 *p2 修改 i 的值。

 

 

#include <iostream>

using namespace std;

int main()
{
	//num1 为 int 类型的变量,可以修改它的值
	//num2 为 int 类型的常量,不可以修改它的值
	int num1 = 10;
	const int num2 = 10;
	num1 = 20;
	//num2 = 10;//出错

	//普通指针,可以修改p1的值,也可以修改*p1来修改num1的值。
	//所以只能用int类型的数据来初始化,不能用const int类型,不能修改常量的值。
	int *p1 = &num1;
	//int *p2 = &num2;//出错
	
	//底层const,可以修改指针(p3,p4),但是不可以修改*p3,*p4,去修改num1,num2的值。
	//可以使用int类型或const int 类型的数据来初始化
	const int *p3 = &num1;
	const int *p4 = &num2;

	//顶层const,不可以修改指针(p5,p6),但是可以通过*p5去修改num1的值。
	//所以只能使用int类型的数据来初始化,不能const int类型
	int * const p5 = &num1;
	//int * const p6 = &num2; //错误

	//int类型的引用,可以通过r1去修改num1的值,所以只能使用int类型去初始化,不能使用const int类型
	int &r1 = num1;
	//int &r2 = num2; //出错

	//const int 类型的引用,不能修改r3,r4的值
	//可以使用int类型的数据来初始化,也可以使用const int类型
	const int &r3 = num1;
	const int &r4 = num2;
	return 0;
}

111

[展开全文]

授课教师

SIKI学院老师

课程特色

下载资料(1)
视频(43)