【问题标题】:What happens if I try to define a pointer which points to a string literal in C? [duplicate]如果我尝试在 C 中定义一个指向字符串文字的指针会发生什么? [复制]
【发布时间】:2016-08-29 05:16:11
【问题描述】:

例如,

char * first = "Hello World!";

我的问题是,

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

  2. 如果不是,那么first中是否存储了某种随机指针值?

【问题讨论】:

  • 1.是的。 2. 没有实际意义,因为第一个答案是“是”。
  • saving a pointer 是什么意思?
  • @RawN 我觉得“定义”这个词更合适!
  • @RawN 我认为他的意思是将指针存储在first

标签: c string pointers memory string-literals


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这取决于您的平台,它是实现定义的。一般情况下,它会进入只读内存(如果您的系统上有)。阅读更多here

      【讨论】:

        猜你喜欢
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 2022-10-20
        相关资源
        最近更新 更多