こんにちは。C言語の練習問題を解いていて分からないところがあったので解答を見てみましたが、それでも理解が出来なかったところがありましたので、質問させて下さい。
問題は次の通りです。
2つの int 型変数の値を交換する関数を作成しなさい。引数に int 型へのポインタ変数を2つ取り、値を交換します。この関数を使用して、10 個の整数を入力し小さい順に並べ替えて表示するプログラムを作成しなさい。
解答は以下の通りでした。
void swap( int* p1, int* p2 ){
int t = *p1;
*p1 = *p2;
*p2 = t;
}
void main(){
int values[10];
int i, j;
for( i = 0 ; i < 10 ; i++ )
scanf( "%d", &values[i] );
for( i = 0 ; i < 10 ; i++ ){ for( j = i + 1 ; j < 10 ; j++ ){ if( values[i] > values[j] ) swap( values + i, values + j ); //ココ } } for( i = 0 ; i < 10 ; i++ ) printf( "%d ", values[i] );
}
分からなかったのは解答上にコメントでココと書きました部分です。
値を受け取ってそれを並び替えるのならswap(value[i], value[j]);となるような気がしてしまい…。なぜ解答のような記述になるのでしょうか。
初学者ではありますが、ご教授頂けますと幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。