关于NULL,"","\0"和函数的返回为NULL!

sunjun240 2005-06-02 02:04:09
问题1:
char *GetFieldTextPtr()
{
retrun NULL;
}
该函数的返回值是什么?是“\0”吗?

问题2:
char *ptr = NULL; //执行完该句后指针ptr是无效指针,这里NULL不是"\0"
if (*ptr == NULL){ } //这样是判断ptr的内容是不是"\0"?是这个意思吗?
和if (ptr == NULL){ } //这样写是什么意思?错误吗?

问题3:
char *ptr = ""; //执行完该句后指针ptr是无效指针,和char *ptr = NULL的效果一样的吗?都没有跟指针分配空间!?


...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicknide 2005-06-02
  • 打赏
  • 举报
回复
不要用NULL
直接用0;
Wolf0403 2005-06-02
  • 打赏
  • 举报
回复
"" 应该就是一个 '\0',而不是'\0''\0'——对于一个 C-style 的字符串,只有一个 '\0' 是有意义的。
foochow 2005-06-02
  • 打赏
  • 举报
回复
够清楚了-_-
mostideal 2005-06-02
  • 打赏
  • 举报
回复
上面都说得差不多了。。
KenYuan2016 2005-06-02
  • 打赏
  • 举报
回复
解释三个的意思:
NULL:一般用于指针的判断,int *p=NULL;指针已经声明,但是指针为空,不能使用。
/0: 一般用于字符串的结尾,加/0表示该字符串已经结束,标准c c++ 里面都是这么认为的内存中 是存储的值是0x00,也就是说字符串遇到0x00就表示该字符串结束。
"":为空,区别于NULL,内存中跟/0 其实是一样的。
上面的问题迎刃而解了吧!
chenhao518530 2005-06-02
  • 打赏
  • 举报
回复
上面的都说完了,我就说最后一个。
char *ptr = ""的执行过程。
1,首先给""分配内存,这个字符串其实是'\0''\0',前面一个'\0'是字符串本身,而后一个'\0'是C类型字符串的结束。并且要记住的是这个字符串是常量字符串,内容不可修改,。
2,分配好内存后把指向这块内存的起始地址传递给ptr.
所以ptr肯定不是无效指针,定义无效指针应该是char *ptr = NULL;
huwei001982 2005-06-02
  • 打赏
  • 举报
回复
楼主试一下就知道了

char *ptr = NULL 和 char *ptr = '\0' 是一样的
此时指针为空

char *ptr = ""; 指针指向一个常量地址, 该地址的值为 ""
darkstar21cn 2005-06-02
  • 打赏
  • 举报
回复
一般'\0'是用来表示字符串的结束的。
NULL的意思就比较多了,一般来说它是表示一个无效的指针。但是他本身就是0(这很多编译器里都是这么定义的),也就是它有时又可以用于很多场合。
char *ptr = NULL//这是声明一个无效指针
*ptr == NULL//这是判断ptr所指向的内存的内容是不是NULL
ptr == NULL//判断是不是无效指针

char *ptr = "";//ptr指向一个有效地址,这个地址的内容是'\0'
char *ptr = NULL;//prt是一个无效指针,没有指向任何内存

69,371

社区成员

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

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