为什么不能将const指针赋给非const指针,而能反过来弄
答案:3 悬赏:40 手机版
解决时间 2021-03-24 08:41
- 提问者网友:你独家记忆
- 2021-03-23 18:52
为什么不能将const指针赋给非const指针,而能反过来弄
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-03-23 19:10
防止你误操作嘛。。。
const修饰的对象不能进行写操作,如果你可以直接赋值不就能修改那个对象的值了嘛。。。
但是可以进行类型转换。。。
const int i = 0;
int* p = (int*)&i;这样就没问题了,但是不推荐。理由同上。
其实C的类型限制很薄弱的。。
比如以下代码没有类型转换却也没有错误。
const int i = 0;
const int** pp;
int* p;
pp = &p;
*pp = &i;
*p = 1;琢磨一下,就会发现以上代码是没有问题的。
所以使用的时候需要谨慎,以防不小心违背了const的意愿。
好了扯淡完毕。
const修饰的对象不能进行写操作,如果你可以直接赋值不就能修改那个对象的值了嘛。。。
但是可以进行类型转换。。。
const int i = 0;
int* p = (int*)&i;这样就没问题了,但是不推荐。理由同上。
其实C的类型限制很薄弱的。。
比如以下代码没有类型转换却也没有错误。
const int i = 0;
const int** pp;
int* p;
pp = &p;
*pp = &i;
*p = 1;琢磨一下,就会发现以上代码是没有问题的。
所以使用的时候需要谨慎,以防不小心违背了const的意愿。
好了扯淡完毕。
全部回答
- 1楼网友:雪起风沙痕
- 2021-03-23 20:53
const作为一个标记,标记它所定义的变量为常量,试图将常量修改为非常量,编译器会报错,这是编译检查,反过来肯定是没有问题的了,在C语言中可以通过指针强制将常量改变,
const int i = 2;
char * p = &i;
*p = 3;
这时i = 3;你去试试,很久没用了
const int i = 2;
char * p = &i;
*p = 3;
这时i = 3;你去试试,很久没用了
- 2楼网友:空山清雨
- 2021-03-23 19:51
const 指针表示 所指向内容不能改变,假如你赋值给了一个非const指针,即一个值对应了2个指针,你可以通过操控非cons指针去改变值,这样就矛盾了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯