[英]C++: Is “my text” a std::string, a *char or a c-string?
[英]C-string definition in C / C++
在C / C ++中用“C-string”這個詞真正意味着什么? 指向char的指針? 字符數組? 或者也許const-pointer / const數組的字符?
“C字符串”是以0(空字符)字節結尾的字符數組。 數組,而不是任何指針,是字符串 。 因此,C字符串的任何終端子陣列也是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'
終止的字符數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.