我对字符串文字的分配/存储感兴趣.
我确实在这里找到了一个有趣的答案,说:
定义内联字符串实际上是将数据嵌入程序本身并且无法更改(某些编译器通过智能技巧允许这样做,不要打扰).
但是,它与C++有关,更不用说它不打扰了.
我很烦.= d
所以我的问题是我的字符串文字保存在哪里以及如何保存?我为什么不试着改变呢?实施是否因平台而异?有没有人愿意详细说明"聪明的伎俩"?
可能重复:
如何在C中编译字符串文字?
我在下面写了一些小代码.在这段代码中,我认为将比较第一个和第二个"hello"字符串的地址.我很困惑.首先,我认为两个字符串都将存储在只读存储器中,因此会有不同的地址.但执行后打印出"相等".
当我看到objdump时,我无法看到字符串你好.我知道我没有采用变量来存储它们,但是"hello"存储在哪里.
它会存储在STACK上吗?还是会存储在代码段?
#include<stdio.h>
int main()
{
if ("hello" == "hello")
printf("\n equal ");
else
printf("\n not equal");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我改变if条件时 if ("hello" == "hell1"),"不等于"被打印出来.同样,字符串的存储位置和方式如何.它会存储在STACK上吗?还是会存储在代码段?
如果有人在这里给我精心解答,我真的很感激.谢谢