我正在学习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/