Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将本地数组传递给另一个函数调用?_C++_Arrays_Local Variables_Pass By Pointer - Fatal编程技术网

C++ 如何将本地数组传递给另一个函数调用?

C++ 如何将本地数组传递给另一个函数调用?,c++,arrays,local-variables,pass-by-pointer,C++,Arrays,Local Variables,Pass By Pointer,我正在从事一个项目,该项目需要在其自身职能范围内采取某些行动。现在,我必须获取生成的随机值,并从数组中输出它们。我将值存储在numarray中,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,似乎它将获取数组并输出它,但我不知道如何在没有参数的情况下调用函数,以便在main中传递它。这是一种输出阵列的可能方式,还是应该采用完全不同的方式 PS:我知道名称空间不好,但我必须这样做才能通过该类 #include <iostream> #include <fstream

我正在从事一个项目,该项目需要在其自身职能范围内采取某些行动。现在,我必须获取生成的随机值,并从数组中输出它们。我将值存储在
numarray
中,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,似乎它将获取数组并输出它,但我不知道如何在没有参数的情况下调用函数,以便在
main
中传递它。这是一种输出阵列的可能方式,还是应该采用完全不同的方式

PS:我知道名称空间不好,但我必须这样做才能通过该类

#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;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
流随机数据;
ifstream输入随机数据;
void随机生成器();
无效读取();
void printary(int*numaray);
void随机生成器(){
srand(时间(0));
randomData.open(“randomData.txt”);
用于(整数计数器=0;计数器<100;计数器++){
随机数据numarray[i];
}
inputrandomData.close();
}
void打印数组(int*numarray){
对于(int-index=0;index<100;index++){

cout您需要动态分配numarray并从read返回numarray。或者更好地创建numarray,就像您在堆栈中所做的那样,但在main中创建numarray并将其作为参数传递给read,然后作为参数传递给printArray

因为读取完成后Numaray将超出范围,因为您在堆栈上分配了它。

解决方案(根据您的代码):在main中声明局部数组变量。Passby指针指向函数以及数组大小,这是在传递的函数中处理数组所需的。这种设计不可取

您可以设计该类,因为其中涉及一些数据成员,您可以在这些数据成员上调用该类的方法


您可以选择std::vector作为数据成员来保存数据,并根据您的要求保留大小。因为std::vector的保留方法避免了随着向量大小的增长而重新分配。这里,您有大小100。因此您可以保留std::vector的100项。

使用
std::vector
并从
read()返回它<代码> >忘记C样式数组。使用<代码>:ST/:>代码> STD::向量< /代码>。忘记“代码> SRand < /Cord>和<代码> Rand < /Cord>。在头中,我们在现代C++中有更好的选择(参见和)@jes:rand
rand
没有什么根本性的错误。它是一个快速的伪随机数生成器。如果您不需要C++11的
库的特定属性(如均匀分布),没有理由忘记一个有价值的工具。@IInspectable虽然我同意这是一个可以使用的工具,但我还是建议那些可能不知道如何应用它的初学者使用更现代的选项。关于使用std::vector或std::array的评论非常贴切。只有在有理由的情况下,才应该使用原始数组我想补充一点,正如其他人所指出的,最好使用std::vector(或std::array)。在main中声明它,然后将引用传递给read和print函数(void read(std::vector&v);void printary(const std::vector&v);)这对我来说很有效。我只是脑子里想我需要在函数中创建数组,而我没有。@ Kielkodiy游戏:你的方法可以用你正在使用C++的类来改进。问题可以用多种方式来解决,但是正确的方法是必要的。