求证一下(见者有份)

totaljuven 2008-04-04 09:09:36
char a='\0';
char *ptr=a;
if(ptr==0) return true;
else return false;

我一开始以为函数会返回true,但结果是返回了false。这令我很意外,因为'\0'
的ASCII码值就是0啊?
现在既然结果证明是我的想法错了,那么解释应该是红色代码部分的意思是判定ptr指针
是否是空指针,而不是判定ptr所指向字符的码值。
不知道这个解释是否正确,望大家指教!
...全文
59 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
无名剑气 2008-04-04
  • 打赏
  • 举报
回复
哈哈我居然没看出来,果然经验不够`
totaljuven 2008-04-04
  • 打赏
  • 举报
回复
多谢各位了
接分吧
totaljuven 2008-04-04
  • 打赏
  • 举报
回复
不好意思,打错了
[Quote=引用 7 楼 Chiyer 的回复:]
C/C++ code
char a='\0';
char *ptr=a; // 这个你能编译过??

[/Quote]
javabird1986 2008-04-04
  • 打赏
  • 举报
回复
ptr=&a;//ptr里存了a的地址。
不是NULL,返回FALSE.
chenzhp 2008-04-04
  • 打赏
  • 举报
回复
'\0'是一个字符啊。ptr指向它,怎么能够说ptr是NULL??
无名剑气 2008-04-04
  • 打赏
  • 举报
回复
对,应该是这样,因为指向了某一地址这个ptr里面就保存了物理地址,自然不等于0
totaljuven 2008-04-04
  • 打赏
  • 举报
回复
那如果要使ptr为空指针的话,是不是只有*ptr==NULL一种方法喽?
星羽 2008-04-04
  • 打赏
  • 举报
回复

int main()
{
char a='\0';
char *ptr=&a;

printf("ptr == %p\n", ptr);

return 0;
}
星羽 2008-04-04
  • 打赏
  • 举报
回复

char a='\0';
char *ptr=a; // 这个你能编译过??

totaljuven 2008-04-04
  • 打赏
  • 举报
回复
是不是说只要ptr指向了任何东西它就不是NULL了??
无名剑气 2008-04-04
  • 打赏
  • 举报
回复
作为一个初学C++的菜鸟我的见解:
char a='\0'; //赋予a空字符
char *ptr=a; //指针ptr指向这个空字符的物理地址
if(ptr==0) return true; //如果指针地址等于0则返回真
else return false; //否则返回假

你想返回真值我认为应该将条件改为if(*ptr=='\0')
ouyh12345 2008-04-04
  • 打赏
  • 举报
回复
同意楼上
ptr是一个指向a的字符串,显然不是NULL
totaljuven 2008-04-04
  • 打赏
  • 举报
回复
那就是说红色代码部分的意思是判定ptr指针
是否是空指针喽?
ryfdizuo 2008-04-04
  • 打赏
  • 举报
回复
ptr有指向的内存,只不过里面存放的是'\0'空字符而已,
ryfdizuo 2008-04-04
  • 打赏
  • 举报
回复
ptr==NULL时候返回true;
ptr明显不是NULL啊、

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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