私はクラス割り当てに取り組んでいます(これは関連するコードだけが表示される理由です)。私は、乱数の配列へのポインタの配列を割り当て、バブルソート技術を使用しなければなりません。複数の呼び出しレベルでcポインタを渡す
次のように配列が設定されています
int array[DATASIZE] = {71, 1899, 272, 1694, 1697, 296, 722, 12, 2726, 1899};
int *arrayPointers = array; // donation array
関数呼び出しは、メインから来ていると見えます以下の通りです:
bubbleSort(arrayPointers);
私は別々にポインタの交換をしなければなりません機能:実際のバブルソートから
void pointerSwap(int *a , int *b)
{
// swap the pointers and store in a temp
int temp = *a; // temp storage of pointer a while being reassigned
*a = *b;
*b = temp;
}// end of pointerSwap
:
void bubbleSort (int *toStore)
{
//sort each of the pointers successively
int i,j; // counters
for (i=DATASIZE-1;i>1;i--)
{
for (j=0;j<DATASIZE-1;j++)
{
if (toStore[j]>toStore[j+1])
{
pointerSwap(toStore[j],toStore[j+1]);
}// end of if?
}// end of j for loop
}// end of i for loop
}// end of buubleSort
私の問題は、私はコードをコンパイルしようとすると、私はポインタスワップ呼び出すときに、私は次のエラーを取得することです:「pointerSwap」の引数1を渡し
はなし整数からポインタを作りますキャスト
注:「int型*」が、引数期待は型 'int型
は「pointerSwap」の引数2を渡すのであるキャストなし整数からポインタを行い
注:期待 'int型*' が、引数は型である「int型
私は私が間違ってやっているのかわからないです、私は "& toStore [j]を" 試してみましたし、「& toStore [J + 1] "しかし、リストは、(予想される)尖った配列の代わりにオリジナルをソートします。ポインタを期待
pointerSwap(toStore[j],toStore[j+1]);
あなたはint
(toStore[j]
が*(toStore + j)
にequivelentされる)を通過されている機能に:すべてのヘルプははるかに高く評価され、事前に
〜ジョーイ・コールで
ただし、インプレースの並べ替えを避けるために、別のストレージ場所をどこで定義しましたか?注: 'toStore + j'はポインタの方が明確です。 –
外側のforループでjを使用するとどうなりますか?それは私ではないはずですか? – RSon1234
'void bubbleSort(int * toStore)'関数は1つの引数しか取っておらず、何も返さないので、関数は配列をソートする以外に何をしますか?元の配列を変更したくない場合は、どこかにコピーする必要があります。 'bubbleSort'を呼び出すコードを提供してください。 –