【发布时间】:2016-08-29 01:53:42
【问题描述】:
当我将 1 个数组放入一个非常简单的 for 循环和将两个数组放入其中时,我无法理解为什么输出会有所不同。
int arrR[100];
int arrN[100];
//function to run the simulation
void runsim(){
for(int i=1;i<=100;i++){
arrN[i] = i;
arrR[i] = i;
}
}
//function to print the array
void printarr(int x[100]){
for(int i=0;i <= 100;i++){
cout << x[i] << ", ";
}
cout << endl;
}
int main(){
runsim();
printarr(arrR);
printarr(arrN);
return 0;
}
这将 arrR 输出为:0,1,2,3,4,5,6,...,100 这是我想要的,但是 它输出 arrN 为:100,1,2,3,4,5,6,...,100 我不明白。
如果我从 for 循环中删除 arrR,arrN 会打印出我想要的样子
int arrR[100];
int arrN[100];
//function to run the simulation
void runsim(){
for(int i=1;i<=100;i++){
arrN[i] = i;
}
}
//function to print the array
void printarr(int x[100]){
for(int i=0;i <= 100;i++){
cout << x[i] << ", ";
}
cout << endl;
}
int main(){
runsim();
printarr(arrN);
return 0;
}
这会将 arrN 输出为 0,1,2,3,4,5,6,...,100
有趣的是,如果我将代码中的所有 100 都更改为 10,即使我将两个数组都保留在 for 循环中,这个问题也会消失。
谁能帮我理解我错过了什么?我确信这很简单,因为我对 C++ 还很陌生。谢谢!
【问题讨论】:
-
for(int i=1;i<=100;i++)... 问题已经存在:数组在 C++ 中是从零开始的。您正在尝试访问不应访问的内存区域。 -
没有
x[100]供您访问