/* 將所給矩陣轉秩后輸出 */#include <stdio.h>#define SIZE 4void print_array(int array[SIZE][SIZE]){int i, j;for (i = 0; i < SIZE; ++i) {for (j = 0; j < SIZE; ++j)printf("\t%-4d", array[i][j]);printf("\n");}}void transpose_array(int array[SIZE][SIZE], int transpose[SIZE][SIZE]) {int i, j;for (i = 0; i < SIZE; ++i) {for (j = 0; j < SIZE; ++j)transpose[j][i] = array[i][j];}}int main(void){int array[SIZE][SIZE] = {{0, 1, 2, 3},{4, 5, 6, 7},{8, 9, 10, 11},{12, 13, 14, 15}};int transpose[SIZE][SIZE] = {0};/* 打印二維數組*/printf("Primary array:\n");print_array(array);/* 將數組轉秩結果存入另一個數組中 */transpose_array(array, transpose);/* 打印二維數組*/printf("\nFinal array:\n");print_array(transpose);return 0;}為什么transpose開始是數組全是0,后來在 transpose_array函數中變成轉置矩陣,但是由于形參無法傳遞給形參應該不會輸出轉置吧?
3 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
明確一點,由于C只有值傳遞,所以任何情況下,形參只是實參的副本,形參改變都不會影響實參【本身】
那么特別的,這里的參數是指針
舉個例子,若定義
int a=0,*p=&a,*q=&a;
那么如果(*p)++后,你認為(*q)的值是多少...
當然是1
那么在帶回函數調用的問題,如果參數是指針的話,同上理,是間接改變變量的值,這也正是值傳遞精髓
- 3 回答
- 0 關注
- 176 瀏覽
添加回答
舉報
0/150
提交
取消