为什么数组到指针的输出不相关

Why output of array to pointer is not related

int main(){ //main function
MySort sorter;
int* sortedValues;

cout <<  "Random Numbers\n--------------------------\n";
sorter.assignRandom();
sorter.printData();
return 1;
}

这里是头文件:

class MySort{
private:
    int* data;
    const int N = 10;


public:
    void assignRandom();
    void printData();
    void printArray(int*);
    int* sortAscending();
    int* sortDescending();
    };

其实现文件:

void MySort::assignRandom(){ 

    int array[N];
    for(int a=0;a<N;a++){
    array[a] =  (rand() %10)+1; //array fill with random numbers 1 to 10 but output is not  
    }

    data=array;
}

void MySort::printData(){

   for(int a=0;a<N;a++){
    cout<< *(data+a)<<", "; // printing data elements
   }
}

输出:

随机数:

2, 0, 1905488, 0, 7339472, 0, 1, 0, 50, 0,

像这样但是我的1到10的随机数哪里有问题?

在这个成员函数中

void MySort::assignRandom(){ 

    int array[N];
    for(int a=0;a<N;a++){
    array[a] =  (rand() %10)+1; //array fill with random numbers 1 to 10 but output is not  
    }

    data=array;
}

您正在将局部数组 array 的第一个元素的地址分配给数据成员 data

退出函数后本地数组将不存在。它的内存可以被覆盖。所以指针 data 是一个无效指针。因此,该程序具有未定义的行为。

创建class的数组数据成员或动态分配内存并将其地址分配给数据成员data