#include <iostream>
#include <string>
using namespace std;
int main()
{
int i=-1;
const int ic=i;
const int *pic=⁣
int *const cpi=⁣
const int *const cpic=⁣
}
出现error C2440: 'initializing' : cannot convert from 'const int *' to 'int *const '错误 这是为什么?
问题出现在int *const cpi=⁣这一行 可不可以说得具体点 我是新手 谢谢
这句话的意思是:两个变量的类型不同,不能进行初始化赋值
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是常量(指针) ,指向字符类型
可结合以下代码,进行上述的理解与练习:
#include <iostream >还有一种定义方式,表示两者都不可改变:
形式:const int * const pTmp ;
含义:pTmp不可修改,pTmp所指对象也不能修改。