C / C ++中的C字符串定义
在C / C ++中用“C-string”这个词真正意味着什么? 指向char的指针? 字符数组? 或者也许const-pointer / const数组的字符?
“C字符串”是以0(空字符)字节结尾的字符数组。 数组,而不是任何指针,是字符串 。 因此,C字符串的任何终端子arrays也是C字符串。 char *
(或const char *
等)类型的指针通常被认为是指向字符串的指针,但它们实际上是指向字符串元素的指针,通常被视为指向字符串初始元素的指针。
const或非const字符数组,以尾随0 char结尾。 所以以下所有都是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";
C字符串是一系列由0字节终止的字符,也称为空终止字符串 。 它既可以作为数组( char[]
)访问,也可以作为指向第一个字符( char *
)的指针访问。
在C ++中,还有另一种名为std::string
,它不需要以0字节终止。 C-string这个术语经常被C ++程序员用来表示一个空终止字符串而不是std::string
类型。
根据标准(C11§7.1.1), 字符串是由第一个空字符终止并包括第一个空字符的连续字符序列, 即由'\0'
终止的字符数组。