相关疑难解决方法(0)

字符串文字:它们去哪儿了?

我对字符串文字的分配/存储感兴趣.

我确实在这里找到了一个有趣的答案,说:

定义内联字符串实际上是将数据嵌入程序本身并且无法更改(某些编译器通过智能技巧允许这样做,不要打扰).

但是,它与C++有关,更不用说它不打扰了.

我很烦.= d

所以我的问题是我的字符串文字保存在哪里以及如何保存?我为什么不试着改变呢?实施是否因平台而异?有没有人愿意详细说明"聪明的伎俩"?

c memory string-literals

155
推荐指数
6
解决办法
7万
查看次数

地址比较和字符串存储

可能重复:
如何在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上吗?还是会存储在代码段?

如果有人在这里给我精心解答,我真的很感激.谢谢

c

5
推荐指数
1
解决办法
273
查看次数

标签 统计

c ×2

memory ×1

string-literals ×1