char characters[] = {'h','e','l','l','o'};
char* characters[] = {"h","e","l","l","o"};
后者如何能够指向单个字符串?
最佳答案
How is the latter able to point to individual strings?
当你写下这个:
char characters[] = {'h','e','l','l','o'};
您定义了一个char
类型的数组,即您定义了一个char[5]
类型的变量。因此,您可以使用 char
类型的元素对其进行初始化。
相反,当你写:
char* characters[] = {"h","e","l","l","o"};
您定义了一个char*
类型的数组,即您定义了一个char*[5]
类型的变量——以及char*
> 表示指向 char
的指针,即 C 样式字符串。因此,您可以使用字符串文字类型的元素来初始化它。
也许第二个数组应该更恰本地命名为strings[]
,而不是characters[]
。
准确地说,字符串文字(例如 'h'
)本身就是 const char[2]
1< 类型/sup>,在指针方面对应于 const char*
。因此,此类字符串的数组应定义为 const char* strings[] = ...
而不是 char* strings[] = ...
。
1 const char[2]
而不是 const char[1]
因为它以 null 终止,因为它是一个保存第 1 个值的数组元素为 'h
,第二个元素为 '\0'
关于c++ - const 数组如何能够在每个元素中仅包含字符,而 char* 数组却能够在每个元素中指向字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093193/