[探讨]关于if的一个细节问题

wendy_welcom 2007-10-11 02:17:10
在一本书上看到下面的写法是不妥当的(它的理由是文字列的比较不妥当):
strcpy((char *)p, "OK");
if (p == "OK") {
。。。

书中说 应该写成如下格式,
if (strcmp((char *)p, "OK") == 0) {

}

请问这是为什么,谢谢
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xljiong 2007-10-11
  • 打赏
  • 举报
回复
楼上的是正解,一定要比较,改成 *p 再比较。
yanhailiangyhl 2007-10-11
  • 打赏
  • 举报
回复
2楼的正确。
当然也要看p原来的类型。如果它重载了操作符==,例如CString,或者_bstr_t就领当别论了!
如果它的类型就是char*,那么p的值就只是一个地址了。
manrenmanren 2007-10-11
  • 打赏
  • 举报
回复
p 是一个指针
"OK"是一个常量字符串

不是指针与"OK"比较 而是指针所指内容与"OK"比较
ckt 2007-10-11
  • 打赏
  • 举报
回复
好像是有的编译器
对于不同的指向 同一常量字符串的 指针
地址是不同的。
strcmp比较的是内容,不是地址,比较安全
rainharder 2007-10-11
  • 打赏
  • 举报
回复
第一个是比较字符串的地址

第二个才是比较字符串的内容

69,371

社区成员

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

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