char的实习工作 - 更好/等于查找

imm*_*art 1 c c++ lookup-tables

我尝试了以下方法:

int main()
{
    char* a = "sdwgfwegwe wefwef wefwefwefwysadqaw";
    char* b = "acd";
    char* c = "sdwgfwegwe wefwef wefwefwefwysadqaw";
    char* d;

    d = "acd";

    printf("%p\n", a);
    printf("%p\n", b);
    printf("%p\n", c);
    printf("%p\n", d);

    getchar();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在输出(控制台)上,a和c具有相同的地址以及b和d.我想为每个角色实现一个查找表.这样做有什么好处/情况吗?编译器做了什么(上面的例子,而不是查找表:))?检查是否已使用此字符串,如果没有,则为给定字符串保留内存 - >将其返回给?任何人有一些书籍提示或链接,深入解释内部内存分配/管理,即使它是编译器依赖的?提前致谢.

oua*_*uah 7

字符串文字在C中指定为不可修改的.

并从C99理由文件:

"此规范允许实现共享具有相同文本的字符串副本,将字符串文字放在只读内存中,并执行某些优化"