亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么結果是轉置?希望高手解決

為什么結果是轉置?希望高手解決

C C#
海綿寶寶撒 2022-07-27 16:11:38
/* 將所給矩陣轉秩后輸出 */#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
那么在帶回函數調用的問題,如果參數是指針的話,同上理,是間接改變變量的值,這也正是值傳遞精髓

查看完整回答
反對 回復 2022-08-01
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

數組對應一段地址,無論實參還是形參都是操作該段地址的內容。

查看完整回答
反對 回復 2022-08-01
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

因為c對于數組的存儲形參和實參地址空間是共用的,所以改變形參的值,實際上改變了實參的值

查看完整回答
反對 回復 2022-08-01
  • 3 回答
  • 0 關注
  • 176 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號