就像标题所说,我一直在尝试打印分配给指针的动态分配数组的元素。从那里我试图让它在添加一些元素后打印出数组的元素,但是我得到了甚至不是整数的非常奇怪的字符。这是一些代码。从指针中获取打印动态int数组的奇怪字符
//QS.h
class QS: public QSInterface { //where the pointer is declared
private:
int* quickSort;
//QS.cpp
bool QS::createArray(int capacity) { //where the array is created
if (quickSort != NULL) {
//delete [] quickSort;
}
quickSort = new int[capacity];
arrayCap = capacity;
arraySize = 0;
return true;
}
bool QS::addToArray(int value) { //elements are added
if (arraySize >= arrayCap) {
return false;
}
quickSort = &value;
++arraySize;
return true;
}
string QS::getArray() const { //where array is "printed"
string array;
for (unsigned int i = 0; i < arraySize; ++i) {
array += *quickSort + i;
array += ", ";
}
return array;
}
输出我收到的只是无意义的ASCII字符,而不是内存地址。我想我在添加到数组时可能会搞砸了。任何帮助?由于
注* I“具有”使用数组,但也许在别的世界的载体会更好
里面'createArray()',你执行以下语句: 'int arr [capacity]; quickSort = arr;'。在函数结束时,'arr'被破坏,因为它是一个局部变量。因此,quickSort指向垃圾。 – user2296177
哎呀,我完全忘了。这应该使用“新”。让我修复 –
'int arr [capacity];' - 这是无效的C++。数组声明使用常量而不是变量来表示条目的数量。 – PaulMcKenzie