常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
How is a const array able to have only characters in each element but a char* array is able to point to strings in each element?
char characters[] = {'h','e','l','l','o'};
char* characters[] = {"h","e","l","l","o"};
后者如何能够指向单个字符串?
后者如何能够指向单个字符串?
当你写这个的时候:
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,它在指针术语中对应于const char*
。因此,应该const char* strings[] = ...
而不是char* strings[] = ...
定义此类字符串的数组。
1const char[2]
而不是const char[1]
,因为它以 null 结尾,因为它是一个数组,保存要'h
的第一个元素和要' '
的第二个元素
因为类型不同。在第一个示例中,您有一个字符数组,在第二个示例中,您有一个指向字符的指针数组(如果需要,可以使用数组数组(。字符串文本的类型为const char[]
,转换为const char*
。在第二个示例中,您应该有一个const
限定符:
const char* characters[] = {"h","e","l","l","o"};
碰巧您的字符串文字中有一个字符,后跟一个隐藏的 null 终止字符。因此,如果您有:
const char test[] = "h";
你实际拥有的是:
const char test[] = {'h', ' '};
添加一个指向上述示例的指针,您将拥有一个以 null 结尾的字符数组数组。 为了使事情更清楚,您还可以:
const char* characters[] = {"hello","world","etc"};
更喜欢 std::string 而不是上述方法,因为它为您完成了所有繁重的工作。
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 如何将元素添加到数组的线程安全函数?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输出没有重复元素的动态数组(收缩数组)C++
- 数组中最大的非重复元素
- 数组元素打印的递归方法
- 对字符数组中的元素执行逐位操作
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 通过交换元素使数组相同
- 按平均值替换数组中的元素
- 打印矢量数组中的所有元素
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 如何将元素从向量转移到新数组?
- 如何在向量数组中插入元素?
- 为什么 2 个相同数组的元素彼此相等
- C++ 中的二维整数数组,每行中的元素数量不均匀