C++数组中的初始值设定项是什么?
What is an initializer in arrays in C++?
我正在学习C++数组。我创建了一个数组,但出现错误:
字符 [5] 中的初始值设定项太多。
我的代码:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
int main() {
char myName[6][5] = {{'A', 'd', 'i', 't', 'y', 'a'},
{'S', 'i', 'n', 'g', 'h'}};
cout << "The 1st letter in the 1st array is " << myName[0][0] << endl;
return 0;
}
当我用myName[6][6]
替换char myName[6][5]
时,即使数组有 5 个字母,错误也不存在。
如何摆脱错误?
您的声明
char myName[6][5]
声明一个由六个数组组成的数组,每个数组包含五个字符。它不是两个 6 个字符和 5 个字符的数组(分别(。您有数组myName[0]
myName[5]
。
由于myName
中的每个子数组只有五个字符,因此很难理解为什么会出现错误,因为第一个元素myName[0]
是用六个元素初始化的。
如果你想使用字符串,那么首先你应该使用std::string
,如
std::string myNames[] = { "Aditya", "Singh" };
或者,如果您不允许使用std::string
,请创建一个数组数组,其中每个子数组的长度足以容纳最长的字符串:
char myNames[][7] = { "Aditya", "Singh" };
请注意,大小 if7
,因为 C++ 中的字符串实际上称为以 null 结尾的字节字符串,而以 null 结尾的是一个也需要空格的额外字符。这意味着一个六个字符的字符串需要七个字符的空间来容纳终结符。
相关文章:
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 有人可以解释一下吗?这是关于数组和数组内部 if 语句的一些处理
- 如何从字符数组(不是字符串数组)中删除符号
- 如果我使用malloc()而不是堆栈数组,OpenGL不会渲染对象
- 如何判断指针是否是指向数组的指针
- 为什么这段代码给出错误......'a'是指针到字符指针,应该存储's'的地址,因为s是指向数组的第一个元素的指针
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 将内存分配给 2D 数组时,“new int*[rowCount];”的含义是什么?是 2D 数组,是指向数组的指针数组
- 当我们使用字符串而不是字符数组时如何处理字符串的字符
- 如何将 c 字符串转换为指针数组,其中每个指针都是 char 数组中的一个单词
- 使用字符串而不是字符数组时程序崩溃
- 当参数之一是指针数组时,如何从C#调用C DLL
- 在C 中可能是字符串数组
- 这是缩小数组的有效方法吗?
- 这是什么数组声明
- C++-什么是指针数组版本的temp.pushback(temp[i])
- 为什么插入时动态分配的数组大小是初始数组的 2*大小,而不是大小+1?
- 不了解什么是内部数组
- 为什么我的程序是,数组中任意两个元素之间的最小差异,给出相反的结果
- 什么是连续数组