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

#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();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值