如果我尝试在C中定义指向字符串文字的指针会发生什么?

时间:2016-08-29 05:16:12

标签: c string pointers memory string-literals

例如,

char * first = "Hello World!";

我的问题是,

  1. 字符串文字是否存储在内存中? (如果是,我猜指针first是字符串文字的初始元素的地址" Hello World")

  2. 如果没有,那么first中存储了某种随机指针值吗?

3 个答案:

答案 0 :(得分:3)

是的,字符串文字存储在内存中,通常存储在 .rodata 部分

答案 1 :(得分:2)

是的,字符串文字存储在内存中。 C和C ++标准只是说字符串文字具有静态存储持续时间,任何修改它们的尝试都会给出未定义的行为,并且具有相同内容的多个字符串文字可能会也可能不会共享相同的存储。

答案 2 :(得分:1)

这取决于您的平台,它是实现定义的。一般情况下,如果您的系统可用,它会转到只读内存。阅读更多here