我有一个C ++程序。我有一个初始化整数数组的函数,但我不知道如何将它传递给main。我试过这种方式但是有很多错误。
主要
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int readArray1();
int nArray1, nArray2;
int main() {
int firstArray[nArray1];
int secondoVettore[nArray2];
firstArray[nArray1] = readArray1();
secondArray[nVettore2] = readArray2();
system("pause");
return 0;
}
ReadArray1
int readArray1() {
int array[nArray1];
cout<<"Insert the length of the array: "<<endl;
cin>>nVettore1;
for(int i=0; i<nArray1; i++) {
cout<<"Insert the"<<i+1<<" element of the array: "<<endl;
cin>>array[i];
}
return array[nArray1];
}
答案 0 :(得分:0)
您无法从函数返回整个数组。但是,您可以返回函数中所包含的数组的地址。
为此,只需修改函数以使用指针返回地址,并使用变量存储地址并指向该位置。修改示例的一部分,所需的代码变为:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int nArray1=10;
int * readArray1() {
static int array[10];
for(int i=0; i<10; i++) {
cout<<"Insert the"<<i+1<<" element of the array: "<<endl;
cin>>array[i];
cout<<&array[i];
}
return array;
}
int main() {
int * firstArray;
firstArray = readArray1();
system("pause");
return 0;
}
然后如果你想访问数组,只需再次使用一个指针(如cout&lt;&lt; *(firstArray + 2)将打印数组[2])。还要注意,你需要在函数static中声明数组(所以如果你需要变量大小只是声明一个更大的数组)。
答案 1 :(得分:0)
std :: vector是一个巨大的帮助。
std::vector<int> readarray()
{
std::vector<int> answer; //. answer is here the empty array
while(acondition)
{
int x = input():
answer.push_back(x);
}
return answer;
}
能够将数组作为一个单元来处理更容易,C方法需要对malloc和realloc进行裸调用,以及这些调用失败时的逻辑。不要被相当笨重的模板语法所拖延。