【求助】int型空指针和char型空指针的区别

xjyr 2008-02-23 12:11:10
/*
2008年2月23日12:01:09
int型空指针和char型空指针的区别
*/

# include <iostream>
using namespace std;

int main(void)
{
int *p = NULL;
cout << p << endl; //该行的输出结果是: 00000000

char *q = NULL;
cout << q << endl; //为什么这行运行时在Vc++6.0中会强行终止?

return 0;
}
...全文
279 17 打赏 收藏 转发到动态 举报
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
License2Kill 2008-06-09
  • 打赏
  • 举报
回复
内容,和指针。。。稍微懂了。 static_cast<void*>(q) 好方法
qmm161 2008-02-28
  • 打赏
  • 举报
回复
咋一看还真觉得莫名其妙,思维定势!
xjyr 2008-02-28
  • 打赏
  • 举报
回复
to sheenl
to agaric
对于零号单元到底存放什么 我也不是太清楚! 不过应该不是一个普通的内存单元吧
独孤过儿 2008-02-25
  • 打赏
  • 举报
回复
想要指针地址的时候,用一下强制转换,像hong8292那样就行了
ribut9225 2008-02-25
  • 打赏
  • 举报
回复
学习
hemu1190 2008-02-25
  • 打赏
  • 举报
回复
学习
tutu333 2008-02-24
  • 打赏
  • 举报
回复
up
yuyunliuhen 2008-02-24
  • 打赏
  • 举报
回复
学习中。。。
agaric 2008-02-24
  • 打赏
  • 举报
回复
>对对 我太蠢了 怎么都忘了
>我普冲一下:地址为0的内存单元存放的是中断向量表 不允许被访问
>故出错!

呵呵,對于現代操作系統上的一般應用程序, 地址 0 只是一個普通的地址,并沒有存放什么中斷向量表,只不過那里不能讀寫,所以才會產生異常。

BEYOND_Q 2008-02-23
  • 打赏
  • 举报
回复
# include <iostream>
using namespace std;

int main(void)
{
int *p = NULL;
cout < < p < < endl; //该行的输出结果是: 00000000

char *q = NULL;
cout < < &(*q) < < endl; //为什么这行运行时在Vc++6.0中会强行终止?

return 0;
}
anmoi_yang 2008-02-23
  • 打赏
  • 举报
回复
char *q = NULL;
cout < < q < < endl; //输出q在内存中的地址值
sheenl 2008-02-23
  • 打赏
  • 举报
回复
呵呵, 也补充你一下, 地址为0的地方, 并不一定是中断向量表, 只是dos的中断向量表放在那里。
具体中断如何处理, 取决于操作系统, 32位的操作系统一般都不会采用dos的那种原始方法。
xjyr 2008-02-23
  • 打赏
  • 举报
回复
对对 我太蠢了 怎么都忘了
我普冲一下:地址为0的内存单元存放的是中断向量表 不允许被访问
故出错!
agaric 2008-02-23
  • 打赏
  • 举报
回复
akirya,回答是對的, 應為 cout 認為你的 q指向一個字符串所以試圖打印字符串的值。
hong8292 2008-02-23
  • 打赏
  • 举报
回复
因为ostream& operator(char const* p)的行为是输出p指向的字符串
所以改为
cout<<static_cast<void*>(q)<<endl;
就行了
  • 打赏
  • 举报
回复
cout对于char*类型的指针是输出内容,不是指针的值.
hityct1 2008-02-23
  • 打赏
  • 举报
回复
两者都是错误用法,至于为什么不一样,可能是重载操作符“<<”有区别,估计要看源码了。
不过:
int *p4 = NULL;
printf("%d\n",p4);

char *q4 = NULL;
printf("%d\n",q4);
都可以。
相关推荐

63,593

社区成员

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