gpt4 book ai didi

c++ - "some"== "some\0"和 strcmp ("some","some\0") 在 C++ 中有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:44 25 4
gpt4 key购买 nike

C++ 中的 "some"== "some\0"strcmp("some","some\0") 有什么区别?

为什么 if("some"== "some\0") 返回 falseif(!strcmp("some","some\0"")) 返回 true ?

最佳答案

"some" == "some\0" 

通过地址比较字符串文字。这些文字存储在不同的内存位置。所以总是 false

!strcmp("some","some\0")

比较字符串的内容。因此在该上下文中 "some\0""some" 相同。所以 true

编辑:根据您的评论,您问为什么 "some"== "some"true。这是因为大多数编译器足够聪明,可以重用字符串文字(当它们存储在只读 区域时)。这就是它返回 true 的原因。

附言在下面的情况下,“some”不是以只读方式存储的:

char a[] = "some";

关于c++ - "some"== "some\0"和 strcmp ("some","some\0") 在 C++ 中有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6715247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com