大家好,又见面了,我是你们的朋友全栈君。
一 简单示例
int a;
const int c_a = 1;
int* p;
p = &a;
p = &c_a; // error
即非const指针不能指向const数据(数据为非指针类型)。
int a;
const int c_a = 1;
const int* p1;
p1 = &a;
p1 = &c_a;
即const指针既可以指向const数据又可以指向非const数据(数据为非指针类型)。
// 一层间接关系
int* p;
const int* p1;
p1 = p;
// 二级间接关系
int** p2;
const int** p3;
p2 = &p;
p2 = &p1; // error
p3 = &p; // error
p3 = &p1;
p3 = p2; // error
vs中关于上面三个错误的提示信息如下:
所以,在二级间接关系中,数据为指针时,const指针赋值表现的并不一致(p3 = &p不通过,p3 = p2不通过)。
二 综上
如果数据类型本身并不是指针,则可以将const数据或非const数据的地址赋给指向const的指针,但只能将非const数据的地址赋给非const指针。二级间接关系中,需要注意const指针的赋值。
三 参考
C++ primer plus 第6版
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157475.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...