『关键字』指针常量 常量指针 指针引用 C++陷阱与缺陷
最近在看C++ Primer
感觉到这书的厚重
读到第三章
发现了C语言陷阱与缺陷中曾经提到过的一个C++语义上特别容易混淆的
和晦涩的地方-指针常量与常量指针
写了一段代码来总结经验
代码的用途是声明和定义
一个指向const常量的指针引用和一个指向变量的指针引用
const int ival = 1024;//常量
//方法一
const int * pi = &ival;//pi是指向常量的指针,也就是常量指针
const int * & pi2 = pi;//pi2是指向常量的指针的引用,也就是常量指针引用
//方法二
//这是比较晦涩的地方
//第一个const说明引用指针指向的对象是常量,这从ival的定义上得出
//第二个const说明pi3是个const引用
//第二个const的使用是因为&ival是文字常量,它是个值,不可寻址,
//编译器实际上是先生成一个临时变量temp=&ival,再由pi3指向temp
//但是这种规则只有在const引用中才会出现。所以pi3也必须是个const值
const int * const & pi3 = &ival;
//非const变量的指针引用
int ival2 = 2048;
int * const & pi4 = &ival2;
代码如下
//////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int main(void)
{
const int ival = 1024;
const int * pi = &ival;
const int *& pi2 = pi;
const int ival2 = 2048;
const int* const & pi3 = &ival2;
int ival3 = 4096;
int * const & pi4 = &ival3;
return 1;
}