C++ 为什么数组到指针的输出不相关
其实施文件:C++ 为什么数组到指针的输出不相关,c++,arrays,pointers,scope,undefined-behavior,C++,Arrays,Pointers,Scope,Undefined Behavior,其实施文件: class MySort{ private: int* data; const int N = 10; public: void assignRandom(); void printData(); void printArray(int*); int* sortAscending(); int* sortDescending(); }; void MySort::assignRandom(){ 整数数组[N];
class MySort{
private:
int* data;
const int N = 10;
public:
void assignRandom();
void printData();
void printArray(int*);
int* sortAscending();
int* sortDescending();
};
void MySort::assignRandom(){
整数数组[N];
对于此成员函数中的(int a=0;a)
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
}
}
void MySort::assignRandom(){
整数数组[N];
for(int a=0;adata=array;
将data
变为悬空指针(函数结束后array
超出范围)int-array[N];
在函数assignRandom
中是本地的。您必须从外部将此数组作为输入传递给此函数。您可以通过几种方法来实现这一点,要么将assignRandom中的int数组重写为私有成员变量,要么将数组作为动态变量分配给堆。这两种方法都有效。@OğuzhanDuymaz in本例添加一个动态分配内存并将其地址分配给数据成员数据的构造函数和一个释放已分配内存的析构函数。
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
}
}
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;
}