『关键字』指针常量 常量指针 指针引用 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; }
|