タイトルのように、私はポインタに割り当てられた動的に割り当てられた配列の要素を表示しようとしています。そこからいくつかの要素が追加された後に配列の要素を出力しようとしましたが、intでもない非常に奇妙な文字を取得します。ここにいくつかのコードがあります。印刷から奇妙な文字を取得する動的なint配列fromポインタ
//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