C 字符串声明

标签 c string pointers

我正在学习C,今天我一直在C中的“字符串”。基本上我明白C中没有像字符串这样的东西。 在 C 语言中,字符串是以\0 结尾的数组字符。 到目前为止一切顺利。

char *name = "David";
char name[] = "David";
char name[5] = "David";

这就是令人困惑的地方。声明“字符串”的三种不同方法。您能否给我提供一个简单的例子,在什么情况下使用哪种。我在网上看了很多教程,但还是不明白。

我在 stackoverflow 上读到了这个 What is the type of string literals in C and C++? 问题,但仍然无法理解其中的区别。

最佳答案

  • 第一个 char *name = "David"; 是字符串文字,驻留在内存的只读部分。您无法对其进行任何修改。最好写一下

    const char *name = "大卫";

  • 第二个 char name[] = "David"; 是一个由 6 个字符组成的字符串,包括 '\0'。可以修改。

  • char name[5] = "David"; 调用未定义的行为。 "David" 是一个 6 个字符的字符串(包括终止符 '\0')。您需要一个 6 个字符的数组来存储它。

    角色名称[6] = "大卫";

进一步阅读:C-FAQ 6. Arrays and Pointers .

关于C 字符串声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20598788/

相关文章:

c 函数 fprintf 变量文件指针

c++ - 使用指针创建对象访问冲突错误

使用指针的 C++ 复制构造函数

c - 如何进行类型转换?

C 编程 - 在结构进入链接列表时对其进行排序

c - 使用子字符串的转换规则转换字符串

c - gettext : in-memory translation 的效率

java - 从 Java 中的单词打印元音

javascript - 将字符串转换为整数并忽略冒号

objective-c - swift 3 : stringByReplacingCharactersInRange alternatives