关于i的问题

zxx178239 2013-10-06 12:36:56

const int im = 0;
int *pq;
pq = im;



const int i = 0;
int *p;
p = i;

第一段代码是正确的,第二段代码是错误的,这是什么原因?
大神解答下
...全文
129 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
细细口味下 什么是const,什么是readonly,定大悟
zxx178239 2013-10-06
  • 打赏
  • 举报
回复
我找到问题了,程序上边定义了一次 int i; 没发现- -
pathletboy 2013-10-06
  • 打赏
  • 举报
回复
这俩不一样么,就是变量名换了下,这2段都语法正确,语义错误,指针指向了非法内存。
zxx178239 2013-10-06
  • 打赏
  • 举报
回复
引用 7 楼 max_min_ 的回复:
代码都是一样的啊!没看出来有什么端倪? 楼主的意图是?
前面定义了一个 int i;忘了注释掉,重复定义了,出现错误- -纠结了很久
哈利_蜘蛛侠 2013-10-06
  • 打赏
  • 举报
回复
楼主你的代码位置没有粘贴正确哦!要把代码放在两个[]中间才行啊
whdugh 2013-10-06
  • 打赏
  • 举报
回复
刚翻了下书 对指针进行初始化或赋值只能使用以下四中类型的值(C++中) 1)0值常量表达式,在编译时可获得0值的整型const对象或字面常量0
const int i = 0;
int *p;
p = i;
这应该是对的
max_min_ 2013-10-06
  • 打赏
  • 举报
回复
代码都是一样的啊!没看出来有什么端倪? 楼主的意图是?
whdugh 2013-10-06
  • 打赏
  • 举报
回复
应该没有问题吧 0(int)转换为NULL(int*)
lin5161678 2013-10-06
  • 打赏
  • 举报
回复
引用 4 楼 pathletboy 的回复:
在C里面 0在指针上下文是 空指针常量 NULL是空指针常量 并且C保证 2个空指针常量 相等[不管内部实现如何] 于是 0在指针上下文 等效于 NULL C++不清楚
pathletboy 2013-10-06
  • 打赏
  • 举报
回复
引用 3 楼 lin5161678 的回复:
引用 1 楼 pathletboy 的回复:
这俩不一样么,就是变量名换了下,这2段都语法正确,语义错误,指针指向了非法内存。
0 等效于 NULL 倒不至于语义错误
0不等效于NULL,详细的可参见 http://wenku.baidu.com/view/250567c08bd63186bcebbcc0.html
lin5161678 2013-10-06
  • 打赏
  • 举报
回复
引用 1 楼 pathletboy 的回复:
这俩不一样么,就是变量名换了下,这2段都语法正确,语义错误,指针指向了非法内存。
0 等效于 NULL 倒不至于语义错误

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧