为什么数组到指针的输出不相关
Why output of array to pointer is not related
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
。
相关文章:
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- std::less是否应该允许在编译时比较不相关的指针?
- 0 的 2D 数组 不相关循环的破坏逻辑 - C++
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- Windows 10命令提示符的输出不正确
- 为什么数组到指针的输出不相关
- 如何使用模板元编程在自由函数C++链接两个不相关的类
- 我的求解(字符串 a、字符串 b)的输出与随机哈希中的预期输出不匹配
- 程序的输出不是来的,它是一个链表程序
- C++ - 为什么 unicode 输出不正确?
- 为什么在使用不相关的宏时会阻止 while 循环结束?
- 存储和打印字符,但输出不是预期的
- 两种情况下的输出不应该相同吗?
- 我的叉子输出不正确
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- Opengl 4 调试输出不起作用
- 强制转换为不相关的引用类型是否违反严格的别名规则?
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- bcdedit 文件输出不起作用,但其他命令可以