如何将本地数组传递给另一个函数调用?
How to pass a local array to another function call?
我正在从事一个项目,该项目要求某些操作在它们自己的功能中。现在,我必须获取生成的随机值,并将它们从数组中输出。我将值存储在 numarray
中,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,它似乎会获取数组并将其输出,但我不知道如何在没有参数的情况下调用该函数以在 main
中传递它。这是输出数组的可能方式,还是应该采用完全不同的方式。
PS:我知道命名空间不好,但这是我必须做的才能通过 class。
#include <iostream>
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <cstddef>
using namespace std;
ofstream randomData;
ifstream inputrandomData;
void randomgenerator();
void read();
void printArray(int *numarray);
void randomgenerator() {
srand(time(0));
randomData.open("randomData.txt");
for (int counter = 0; counter < 100; counter++) {
randomData << rand() % 100+1 << endl;
}
randomData.close();
}
void read() {
inputrandomData.open("randomData.txt");
int numarray[100] = {};
for (int i = 0; i < 100; i++) {
inputrandomData >> numarray[i];
}
inputrandomData.close();
}
void printArray(int *numarray) {
for (int index = 0; index < 100; index++) {
cout << numarray[index];
}
}
int main() {
randomgenerator();
read();
printArray();
return 0;
}
randomgenerator
函数生成值并将它们存储在文件中。
read
函数获取这些值并将它们存储在数组中。
printarray
是我要输出数组值的函数,它给我带来了问题。
您需要从读取动态分配 return numarray。或者甚至更好地创建 numarray,就像您在堆栈上所做的那样,但在 main 中执行并将其作为参数传递给 read,然后作为参数传递给 printArray。
当读取完成时,numarray 将超出范围,因为您将它分配到堆栈上。
解决方案(根据您的代码):在 main 中声明局部数组变量。传递指向函数的指针以及数组大小,因为它需要在传递的函数内处理数组。这种设计不可取。
你可以设计class因为涉及到一些数据成员,你可以在上面调用那个class的方法。
您可以更喜欢 std::vector 作为数据成员来保存数据,保留大小符合您的要求。因为 std::vector 的保留方法避免了随着向量大小的增长而重新分配。在这里,您的尺寸为 100。因此您可以保留 std::vector 的 100 件商品。
我正在从事一个项目,该项目要求某些操作在它们自己的功能中。现在,我必须获取生成的随机值,并将它们从数组中输出。我将值存储在 numarray
中,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,它似乎会获取数组并将其输出,但我不知道如何在没有参数的情况下调用该函数以在 main
中传递它。这是输出数组的可能方式,还是应该采用完全不同的方式。
PS:我知道命名空间不好,但这是我必须做的才能通过 class。
#include <iostream>
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <cstddef>
using namespace std;
ofstream randomData;
ifstream inputrandomData;
void randomgenerator();
void read();
void printArray(int *numarray);
void randomgenerator() {
srand(time(0));
randomData.open("randomData.txt");
for (int counter = 0; counter < 100; counter++) {
randomData << rand() % 100+1 << endl;
}
randomData.close();
}
void read() {
inputrandomData.open("randomData.txt");
int numarray[100] = {};
for (int i = 0; i < 100; i++) {
inputrandomData >> numarray[i];
}
inputrandomData.close();
}
void printArray(int *numarray) {
for (int index = 0; index < 100; index++) {
cout << numarray[index];
}
}
int main() {
randomgenerator();
read();
printArray();
return 0;
}
randomgenerator
函数生成值并将它们存储在文件中。
read
函数获取这些值并将它们存储在数组中。
printarray
是我要输出数组值的函数,它给我带来了问题。
您需要从读取动态分配 return numarray。或者甚至更好地创建 numarray,就像您在堆栈上所做的那样,但在 main 中执行并将其作为参数传递给 read,然后作为参数传递给 printArray。
当读取完成时,numarray 将超出范围,因为您将它分配到堆栈上。
解决方案(根据您的代码):在 main 中声明局部数组变量。传递指向函数的指针以及数组大小,因为它需要在传递的函数内处理数组。这种设计不可取。
你可以设计class因为涉及到一些数据成员,你可以在上面调用那个class的方法。
您可以更喜欢 std::vector 作为数据成员来保存数据,保留大小符合您的要求。因为 std::vector 的保留方法避免了随着向量大小的增长而重新分配。在这里,您的尺寸为 100。因此您可以保留 std::vector 的 100 件商品。