以下const指针的初始化有错吗?

时间:2021-09-23 19:47:34
以下const指针的初始化有错吗?要是有错,错在哪里?
int i = -1;
const int ic = i;
int *const cpi = ⁣

11 个解决方案

#1


前两个没问题,第三个int *const cpi = ⁣应该int const* cpi = ⁣第一* cpi为常指针

#2


int *const cpi = ⁣--->这个有错吧
ic是const int的指针,不能把它赋值给 非const int的指针

#3



int i = -1;
const int ic = i;
const int *const cpi = ⁣

改成这个
或者:
const int * cpi = ⁣

#4


第三个应该为:const int * const  cpi= ⁣ 或 int const * const cpi = ⁣
因为ic是const, 所以cpi应该是一个指向常量的指针,其自身则不要求一定是const的

#5


引用 2 楼 relaxisland 的回复:
int *const cpi = ⁣--->这个有错吧
ic是const int的指针,不能把它赋值给 非const int的指针

int i = -1;   //int 型变量
const int ic = i;   //const 对象
int *const cpi = ⁣  //const指针

cpi是const指针,也就是cpi本身的值(初始化时赋给的地址)不能变,那它指向的对象不是应该没有限制的吗?

#6


lz

const int * cosnt p;

int * const p;

你说说又区别吗?

有区别的

你分清区别,答案就 出来了



#7


引用 6 楼 caddor2011 的回复:
lz

const int * cosnt p;

int * const p;

你说说又区别吗?

有区别的

你分清区别,答案就 出来了


一个是指向const对象的const指针,一个是const指针,就知道这么多!照你的意思是const指针只能指向非const对象?

#8


const 在变量前面,紧跟变量, 这个cosnt不是类型

const int*  const p;

cosnt int* 是类型  const p这个const 不是类型



懂了吗

#9


自己验证一下就可以了...你自己的目标是什么...根据目标验证

#10


前两个都是正确的;
第三个欲用const int的对象初始化一个指向非const对象的const指针,这种方式是非法的。

一下是GCC下的代码错误信息:
Test.cpp:6:19: 错误: 从类型‘const int*’到类型‘int*’的转换无效 [-fpermissive]

#11


楼上都有正解,我学习了

#1


前两个没问题,第三个int *const cpi = ⁣应该int const* cpi = ⁣第一* cpi为常指针

#2


int *const cpi = ⁣--->这个有错吧
ic是const int的指针,不能把它赋值给 非const int的指针

#3



int i = -1;
const int ic = i;
const int *const cpi = ⁣

改成这个
或者:
const int * cpi = ⁣

#4


第三个应该为:const int * const  cpi= ⁣ 或 int const * const cpi = ⁣
因为ic是const, 所以cpi应该是一个指向常量的指针,其自身则不要求一定是const的

#5


引用 2 楼 relaxisland 的回复:
int *const cpi = ⁣--->这个有错吧
ic是const int的指针,不能把它赋值给 非const int的指针

int i = -1;   //int 型变量
const int ic = i;   //const 对象
int *const cpi = ⁣  //const指针

cpi是const指针,也就是cpi本身的值(初始化时赋给的地址)不能变,那它指向的对象不是应该没有限制的吗?

#6


lz

const int * cosnt p;

int * const p;

你说说又区别吗?

有区别的

你分清区别,答案就 出来了



#7


引用 6 楼 caddor2011 的回复:
lz

const int * cosnt p;

int * const p;

你说说又区别吗?

有区别的

你分清区别,答案就 出来了


一个是指向const对象的const指针,一个是const指针,就知道这么多!照你的意思是const指针只能指向非const对象?

#8


const 在变量前面,紧跟变量, 这个cosnt不是类型

const int*  const p;

cosnt int* 是类型  const p这个const 不是类型



懂了吗

#9


自己验证一下就可以了...你自己的目标是什么...根据目标验证

#10


前两个都是正确的;
第三个欲用const int的对象初始化一个指向非const对象的const指针,这种方式是非法的。

一下是GCC下的代码错误信息:
Test.cpp:6:19: 错误: 从类型‘const int*’到类型‘int*’的转换无效 [-fpermissive]

#11


楼上都有正解,我学习了