【C++ 语言基础】指针,引用,const

文章目录

指针和引用

指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元。
引用:变量的别名,对引用的操作与对变量直接操作完全一样。

区别:

(3)指针可以有多级,但是引用只能是一级(int **p;合法 而 int &&a是不合法的)
(4)指针的值可以为空,但是引用的值不能为NULL,并且引用在定义的时候必须初始化;
(5)指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了。
(6)"sizeof引用"得到的是所指向的变量(对象)的大小,而"sizeof指针"得到的是指针本身的大小;
(7)指针和引用的自增(++)运算意义不一样;

const

★常量指针(const 作用的是 值):指向常量的指针,在指针定义语句的类型前加const,表示指向的对象是常量。

	int a = 1,b = 3;;
	const int* p = &a;
	// *p = 4;  // error ,p 指向的内容不能改变
	p = &b;  // ok 
	cout << *p << endl; // 输出3

★指针常量(const 作用的是 变量p):指针常量定义"int* const pointer=&b"告诉编译器,pointer(地址)是常量,不能作为左值进行操作,但是允许修改间接访问值,即*pointer(地址所指向内存的值)可以修改。

	int a = 1,b = 3;;
	int* const p = &a;
	 *p = 4;  // ok
	// p = &b;  // error,const修饰变量p,表示p不能改变 
	cout << *p << endl; // 输出4

★常量指针常量:p指向的值和p都不能变

	int a = 1,b = 3;;
	const int* const p = &a;
	//  *p = 4;  // error
	// p = &b;  // error,const修饰变量p,表示p不能改变 
	cout << *p << endl; // 输出1

★引用本身就是常量,即不可以改变指向。

猜你喜欢

转载自blog.csdn.net/weixin_43154149/article/details/114883867