C++从C继承了数组,几乎无处不在.C++提供了易于使用且不易出错的抽象(std::vector<T>自C++ 98和C++ 11std::array<T, n>以来),因此对数组的需求并不像在C中那样频繁出现.但是,当您阅读遗产时代码或与用C编写的库交互,你应该牢牢掌握数组如何工作.
本FAQ分为五个部分:
如果您觉得此常见问题解答中缺少重要内容,请写下答案并将其作为附加部分链接到此处.
在下文中,"数组"表示"C数组",而不是类模板std::array.假定了C声明符语法的基本知识.请注意,面对异常,手动使用new和delete如下所示是非常危险的,但这是另一个常见问题解答的主题.
(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)
我正在努力建立我在V ++中的C++总体专业知识,所以请原谅我的代码中的任何明显问题......使用下面这个简单的程序,我得到意想不到的输出.
#include <iostream>
int main() {
char f[]="", c[]="";
std::cin >> f;
std::cout << f << std::endl;
std::cin >> c;
std::cout << f << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行时,这是我的结果:
ABC(输入)
f - ABC(输出)
DEF(输入)
f - EF(输出)
也试过:
ABC DEF(输入)
f - ABC(输出)
f - EF(输出)
我希望两条线的输出都是相同的,因为我认为我只读了f一次.此外,如果我正在接受cin并应用它f,为什么第一次尝试读取整个字符串(ABC)而第二次尝试缺少D?
我尝试使用此代码打印结果,但同样的问题发生,所以我在这里假设它是一个问题,cin而不是cout.
for (j=0;j<3;j++) {
std::cout << f[j];
}
std::cout << std::endl;
Run Code Online (Sandbox Code Playgroud)
做了一些研究,我发现这个看起来很有希望的问题,但是当我把声明char f[] …