gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:03:56 25 4
gpt4 key购买 nike

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 是一个无效指针。因此,该程序具有未定义的行为。

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

关于c++ - 为什么数组到指针的输出不相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com