#include <iostream>
using namespace std;
void getarray (int[],int);
void print (int[],int);
int main(){
const int size=10;
int n[]={0};
getarray (n,size);
print (n,size);
}
void getarray (int n[],const int size){
cout<<"Insert elements to fill the array:\n";
for (int i=0;i<size;i++){
cin>>n[i];
}
cout<<"Filling completed.\n";
}
void print (int n[],const int size){
cout<<"The inserted array is:\n";
for (int k=0; k<size; k++)
cout<<n[k]<<" ";
}
仅用于获取数组并打印它。
答案 0 :(得分:5)
问题在于你的数组声明。
int n[]={0};
这告诉编译器你想要一个大小为1的数组,其中n [0]的元素初始化为0。 一旦我大于0,你的代码就会越走越远。
int n[size];
可能就是你在这里寻找的东西。 如果不清楚,请阅读http://www.cplusplus.com/doc/tutorial/arrays/
答案 1 :(得分:0)
问题是您已将 main()中的数组 n 声明为:
int n[] = {0};
该语句的作用是声明一个数组n并初始化它。如您所见,您只使用一个元素初始化数组,即“ 0 ”。这种声明方式根据数组初始化程序语句中使用了多少元素,将创建适当大小的数组的责任委托给编译器。例如:
int foo[] = {1, 2, 3, 4};
会创建一个数组foo,其内存足以容纳最多4个整数。
因此,您的代码所做的就是有效地创建一个只包含1个整数的数组。
现在,当您访问函数中的数组n 时,您尝试使用索引&gt;访问数组。 0.换句话说,数组是一个单元素数组,n [1],n [2]等超出范围,并导致访问随机位置导致未定义的行为(以及程序崩溃!)
您可能正在寻找的是
int n[size];
将创建一个具有足够内存的数组来容纳10个整数元素。