今天写程序的时候出现了报错:error C2440: 'initializing' : cannot convert from 'const int *' to 'int *const '
这句话的意思是:两个变量的类型不同,不能进行初始化赋值
C语言中常见的两个const修饰指针变量的定义方式,经常让人傻傻分不清楚:
const int p;
int * const p;
首先说明,这两个定义,定义出的p都是指针!
但这两个指针变量定义,又都是定义一个常量,常量是指的哪个?
Bjarne在他的The C++ Programming Language 里面给出过一个助记的方法:
把一个声明从右向左读, 读成 pointer to:
const char * p; p is a pointer to char const ; //直译:p是指针,指向字符类型常量char * const p; p is a const pointer to char //直译:p是常量(指针) ,指向字符类型
可结合以下代码,进行上述的理解与练习:
还有一种定义方式,表示两者都不可改变:
形式:const int * const pTmp ; 含义:pTmp不可修改,pTmp所指对象也不能修改。
还有一种定义方式,表示两者都不可改变:
形式:const int * const pTmp ; 含义:pTmp不可修改,pTmp所指对象也不能修改。