可能的重复:
如何在 C 中编译字符串文字?
我写了下面的小代码。在这段代码中,我认为将比较第一个和第二个“hello”字符串的地址。我对此感到困惑。乍一看,我认为这两个字符串都将存储在只读内存中,因此会有不同的地址。但是执行后会打印“相等”。
当我看到 objdump 时,我看不到字符串 hello。我知道我没有使用变量来存储它们,但是“你好”会存储在哪里。
它会存储在堆栈上吗?还是将其存储在代码段中?
#include<stdio.h>
int main()
{
if ("hello" == "hello")
printf("\n equal ");
else
printf("\n not equal");
return 0;
}
当我将 if 条件更改为 时 if ("hello" == "hell1")
,打印了“不等于”。同样,字符串的存储位置和方式。它会存储在堆栈上吗?还是将其存储在代码段中?
如果有人在这里给我详细的答案,我将不胜感激。谢谢