【问题标题】:What is the difference between a String Constant and String Literal in C?C中的字符串常量和字符串文字有什么区别?
【发布时间】:2010-10-12 03:19:08
【问题描述】:

String ConstantString Literal 在纯 C 中的区别是什么?

这个问题与另一个类似:What's the difference between a string constant and a string literal? ...除了一个是关于 Objective-C(使用 NSString)而不是 C。

【问题讨论】:

    标签: c string-literals string-constant


    【解决方案1】:

    C99 Draft from 2007 中使用了术语sting literal字符串常量这个词根本没有出现在草稿中。

    当谈论“foo”时,我发现 string literal 是一个不错的选择(就像 42 是一个文字数字,“foo”是一个文字字符串)。

    【讨论】:

    • 感谢您的澄清。 :) 让我感到困惑的是,很多书都使用术语字符串常量,但 C99 使用字符串文字,如你所说。
    【解决方案2】:

    它们是一回事。只是您使用哪个词来描述字符串的偏好。

    【讨论】:

    • 你的意思是使用哪个 string 来描述字符串 :)
    • 并非所有常量都是文字。
    【解决方案3】:

    用于描述相同想法的第二个单词的拼写?

    我会将它们视为同一事物 - 同一构造的替代术语。

    【讨论】:

    • 所以基本上,字符串字面量或字符串常量这两个短语都可以用来表示相同的意思?
    • @Dave:是的,我就是这么说的(有点警告)——其他人也是这么说的。
    • 正如@BenVoigt 在其他 cmets 中所指出的,文字是常量,但常量可能不是文字。
    【解决方案4】:

    Literalconstant意思一样,都是源代码中表示固定值的符号。

    【讨论】:

    • 不正确。 sizeof (int) 是一个常量,但它不是文字。
    【解决方案5】:
    const char * strConst;
    strConst = "Hello World";
    

    在这个例子中

    • strConst 是一个字符串常量。
    • "Hello World" 是字符串文字,通常存储在程序的只读区域中。

    【讨论】:

    • 有趣的分析,但它并没有真正站起来,恐怕。变量strConst 确实是一个变量;它可以更改为指向字符串文字以外的其他字符串,但您将无法修改通过strConst 指向的字符串。如果你写了const char * const strConst = "Hello World";,那么你可能有一个更强的情况,但是strConst 仍然是一个指针而不是一个字符串常量;指向常量字符串的常量指针,但仍然是指针,而不是字符串常量。
    • 重点是文字是不通过变量标签隐藏的实际文本。但它们都是常量字符数组。
    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    相关资源
    最近更新 更多