关于C++指针、引用和const关键字的各种关系

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Fudanqqqqq/article/details/101575107
#include <stdio.h>
#include<iostream>
using namespace std;
typedef char *new_type;
int main()
{

	//指针是对象,若本身不是常量,是可以随便改变的,分为常量指针和指向常量的指针两种
	const char c=97;
	const char *p1=&c;	//这里相当于(const char) *p1,即指向char常量的指针
	//p1=0;不会报错,因为p1不是常量,只是指向常量
	char c2=98;
	//第一种常量指针写法:
	const new_type p2=&c2;	//这里new_type相当于将char *括起来了,即const修饰的是整个(char *),即char* 类型的常量
	//如果p2指向c会报错,因为p2定义的指向char,而不是const char,故只能指向一个普通char变量,但p2本身是常量,不能改变
	//p2=0;会报错,因为p2是常量指针,初始化后不可改变
	
	//第二种常量指针写法:
	char *const p3=&c2;	



	//引用不是对象,初始化后就不能改变,故引用只区别指向常量or不指向常量
	float pi=3.14;
	//int &x=pi;非法,因为这样不同类型的引用绑定实际上是声明一个临时量int tmp=pi;int &x=tmp;
	//绑定一个临时量的引用无意义,因为不能改变原来的pi值,故c++直接报错
	const float &q1=pi;	//对常量的引用可以指向变量,但该引用不能改变,如果q1=0;会报错
	const int i=1;
	const int &q2=i;	//标准的指向(const int)的引用
	getchar();
}


猜你喜欢

转载自blog.csdn.net/Fudanqqqqq/article/details/101575107