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

Why output of array to pointer is not related

本文关键字:输出 不相关 指针 数组 为什么      更新时间:2023-10-16
int main(){ //main function
MySort sorter;
int* sortedValues;
cout <<  "Random Numbersn--------------------------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是无效指针。因此,程序具有未定义的行为。

要么使数组成为类的数据成员,要么动态分配内存并将其地址分配给数据成员data