#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();
}
关于C++指针、引用和const关键字的各种关系
最新推荐文章于 2024-07-12 03:21:22 发布