void bubsort(int n,int x[]){
int i,j,k,wk; for(k = (n - 2); k >= 0; k--){ printf("ソート%d目\n",k); for(i = 0; i <= k; i++){ if(x[i] < x[i+1]){ wk = x[i]; x[i] = x[i+1]; x[i+1] = wk; } for(j = 0;j < n;j++){ printf("%5d",x[j]); } printf("\n"); } }
}
main(){
int x[] = {40,20,50,10,60};
int n = 5,j;
printf("ソート前\n"); for(j = 0;j < n;j++){ printf("%5d",x[j]); } printf("\n"); bubsort(n,x); printf("ソート後\n"); for(j = 0;j < n;j++){ printf("%5d",x[j]); } printf("\n"); return 0;
}
バブルソートの例文なのですがmain関数でbubsort関数を呼び出してユーザー関数内で並び替えを行っているのはわかるのですがその後ユーザー関数にもどり"ソート後"と書かれた後ろのfor文にて整列後の配列が表示されています。ユーザー関数には戻り値は書いていないので値は戻らないように見えるのですがなぜ値は整列後の値が表示されるのでしょうか。回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/22 09:09