私はクラスで動的メモリ割り当てを開始していますが、それをよく理解していますが、正しく使用することはできません。私はポインタとそれほど大きくないかもしれないように私はどちらかと感じ:P関数から動的に割り当てられたポインタ配列を返すにはどうすればよいですか?
は私のインストラクターは、動的ににサイズとして使用する番号をユーザに促しますreadArrayという名前の関数を作成するための指示を出したの整数配列を作成しますそのサイズ。次に、新しい配列をポインタに代入します。私は、配列を埋めるようにユーザに促すはずです。私はそれから、新しく作成された配列とサイズの両方を返すことになっています。
私は配列を返す方法を考え出すことができませんし、リークを防ぐために使用した後に割り当てを削除するはずのメモリを動的に割り当てるときに考えました。
ソート関数などの他の関数に渡すために、配列とサイズをmainに戻す必要があります。
これで私の思考プロセスが間違った方向に向いているので、私が得ることができる助けに感謝します。
#include <iostream>
using namespace std;
int* readArray(int&);
void sortArray(int *, const int *);
int main()
{
int size = 0;
int *arrPTR = readArray(size);
const int *sizePTR = &size;
sortArray(arrPTR, sizePTR);
cout<<arrPTR[1]<<arrPTR[2]<<arrPTR[3]<<arrPTR[4];
system("pause");
return 0;
}
int* readArray(int &size)
{
cout<<"Enter a number for size of array.\n";
cin>>size;
arrPTR = new int[size];
for(int count = 0; count < (size-1); count++)
{
cout<<"Enter positive numbers to completely fill the array.\n";
cin>>*(arrPTR+count);
}
return arrPTR;
}
あなたの例では、readArrayのプロトタイプが実装しているものと少し違っています。必ずしも必要ではありませんが、プロトタイプに変数名を与えて、それらが何をしているかを文書化するのを助けるかもしれません。 – Firedragon
一般的にソリューションに一致するようにサンプルコードを変更する必要はありません。それが答えです(これはあなたがこのような更新を行うときに意味がないかもしれません)。 – crashmstr
C++のほとんどのクラスはおそらくこのような生の配列をカバーしていますが、これは悪い考えです。初心者は、ベクタを使用するように教えて、生の配列と手動の動的割り当てを後で進んだトピックとしてコースに残しておく必要があります。これはBjarne Stroustrupの素敵な初心者の本[_Programming-Principals and Practice Using C++ _](http://www2.research.att.com~bs/programming.html)がそれを処理する方法です。 – bames53