gpt4 book ai didi

c++ - 从指针打印动态 int 数组获取奇怪的字符

转载 作者:行者123 更新时间:2023-11-28 01:49:43 25 4
gpt4 key购买 nike

正如标题所说,我一直在尝试打印分配给指针的动态分配数组的元素。从那里我试图让它在添加一些元素后打印出数组的元素,但我得到非常奇怪的字符,甚至不是整数。这是一些代码。

//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 字符,而不是内存地址。我想我在添加到数组时可能搞砸了。有什么帮助吗?谢谢

注意 *我“必须”使用数组,但也许在其他世界中使用 vector 会更好

最佳答案

当你执行这一行(添加函数)时:

quickSort = &value;

您基本上将指针quickSort 设置为指向参数value 的内存地址,并停止指向您在开始。因此,您错过了所有其他元素,并打印了随机内存数据的整数解释。

改写:

quickSort[size] = value;

将根据需要将参数value 的值添加到为您的数组分配的内存地址,而不移动指针quickSort

最后,在最后一个函数中:

array += *quickSort + i;

可以更巧妙地替换为:

array += quickSort[i];

并且,只是为了确保从 intstring 的转换正确完成

array += to_string(quickSort[i]);

关于c++ - 从指针打印动态 int 数组获取奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459056/

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