8

C / C ++中“C-string”一词的真正含义是什么?指向字符的指针?字符数组?或者也许是 const-pointer / const 字符数组?

4

4 回答 4

8

“C 字符串”是以 0(空字符)字节结尾的字符数组。数组,而不是任何指针,是字符串。因此,C 字符串的任何终端子数组也是 C 字符串。类型char *(或const char *等)的指针通常被认为是指向字符串的指针,但它们实际上是指向字符串元素的指针,通常被视为指向字符串初始元素的指针。

于 2012-08-30T18:42:22.530 回答
7

常量或非常量字符数组,以尾随 0 字符结尾。所以以下都是C字符串:

char string_one[] = { 'H', 'e', 'l', 'l', 'o', 0 };
char string_two[] = "Hello"; // trailing 0 is automagically inserted by the compiler
const char *string_three = "Hello";
于 2012-08-30T18:38:20.380 回答
3

根据标准(C11 §7.1.1),字符串是由第一个空字符终止并包括第一个空字符的连续字符序列,以 .终止的字符数组'\0'

于 2012-08-30T18:54:46.760 回答
3

C 字符串是一系列以 0 字节终止的字符,也称为空终止字符串。它可以作为数组 ( char[]) 或指向第一个字符的指针 ( char *) 访问。

在 C++ 中有另一种类型的字符串称为std::string不需要以 0 字节终止。C++ 程序员经常使用术语 C-string 来表示以空字符结尾的字符串而不是std::string类型。

于 2012-08-30T18:38:46.910 回答