C、C++中Const修饰指针时总是记不住到底作用的是指针还是指针指向的变量内容:
最近总结了一个绝招,可以绝对理清楚!那就是“
就近原则”
所谓就近原则,意思就是const靠哪个近,就作用在那个上面!
比如:const靠int类型关键字近,那就是说修饰的是整形变量;
const靠指针变量名近,那就是说修饰该指针,说明它不是指针变量,而是指针常量;
但是有一个问题:既然说到是const修饰指针,那就一定有*,比如char const * pContent; 那这个const在*和变量名之间,到底靠谁近呢?
这里要解释说明的是:*不算,const靠谁近指的是类型(如int、char等)和变量名(如这里的pContent),不要算*,因此这里const当然靠char近咯,所以pContent是一个指向字符常量的指针
有了这一条就近原则,const问题迎刃而解!
1) const在前面
const int nValue; //nValue是const
const char *pContent; //*pContent是const, pContent可变
const (char *) pContent; //pContent是const,*pContent可变
char* const pContent; //pContent是const,*pContent可变
const char* const pContent; //pContent和*pContent都是const
2) const在后面,与上面的声明对等
int const nValue; // nValue是const
char const * pContent;// *pContent是const, pContent可变
(char *) const pContent;//pContent是const, *pContent可变
char* const pContent;// pContent是const, *pContent可变
char const* const pContent;// pContent和*pContent都是const
=================================================================================
今天(2013年9月17日15:34:10),又学到一个新的方法,我觉得也非常不错:
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。
char * const cp;
( * 读成 pointer to )
cp is a const pointer to char :cp是一个指向字符型的常量指针,指针不能改变;
const char * p;
p is a pointer to const char:cp是一个指向字符型常量的指针,指针指向的值不能随便改变;
char const * p; 同上。
分享到:
相关推荐
本文给大家介绍了C++中的const限定修饰符。
文件有对const修饰普通变量、指针、函数等等的详细解释,是对c++中const用法的完整总结。
const在C++中占有重要作用,属于小兵立大功的典型,本文档详细介绍了如何使用const
1. const修饰普通变量和指针 2. const修饰函数参数 3. const 修饰函数返回值 4. const修饰类对象/对象指针/对象引用 5. const修饰成员变量 6. const修饰成员函数 7. const常量与define宏定义的区别
C++ 中const总结 const 限定符把一个对象转换成一个常量,如 const int bufSize=512; 申 明 bufSize 的时候,如果不将它初始化,那么编译器会报错:const object must be initialized if not extern。因为 bufSize ...
C中const和C++中const区别,例子和说明
c/c++语言中const的用法,const 定义变量,指针的用法和不同
c++ 的array源码分析和reverse-iterator和-Array-const-iterator类
C++中const使用说明。。。C++中const使用说明。。。
C++ 中const修饰虚函数实例详解 【1】程序1 #include using namespace std; class Base { public: virtual void print() const = 0; }; class Test : public Base { public: void print(); }; void Test::print...
关于const最常见的一个面试题是这样的:char *const和const char*有什么区别,大家都知道const修饰符代表的是常量,即const修饰的变量一旦被初始化是不能被更改的,这两个类型一个代表的是指针不可变,一个代表指针...
一 const基础;二 const的初始化;三 作为参数和返回值的const修饰符;四 类成员函数中const的使用;五 使用const的一些建议。
主要介绍了c++ const 指针与指向const的指针的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
该文档讲述了const与指针的关系,const起了如何的作用。
函数指针和指针函数的区别,以及const的用法,指针常量,常量指针的用法
C语言中const和C++中的const 区别详解 C++的const和C语言的#define都可以用来定义常量,二者是有区别的,const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换,没有...
C++中const关键字详解
C++ learning ---const用法总结,将平时不同情况的const用法,进行了详细的总结。是学习C++的好帮手