Re: [作業] 演算法HW3的int **Input
看板b93902HW作者Favonia (00010110110001101010100)時間18年前 (2005/12/10 01:10)推噓1(1推 0噓 0→)留言1則, 1人參與討論串4/4 (看更多)
※ 引述《greydust (灰)》之銘言:
: ※ 引述《Favonia (00010110110001101010100)》之銘言:
: : 二為陣列不可能轉型成 int**
: : 所以你要問的應該是記憶體分配有沒有連續?xD
: 其實是可以轉的...像這樣寫:
: #define N xxxxx
: int a[N][N];
: int **b = (int **)a;
........
這樣根本不叫轉吧 囧
乾脆傳 void* 算了
: 不過後果...嗯,相當微妙 :p
: 其中最妙的地方就是 sizeof(int **)=8
: 這個要讀還是可以讀的出來啦...只是麻煩
: 嗯,其實講清楚一點我是不知道他是傳"一個二維陣列"
: 還是傳"一個指標的一維陣列",或是其他種的傳法
: 如果是傳一個二維陣列,理論上a[0][0]的位址+4就會變成a[0][1]... etc
: 如果是指標的一維陣列,那a[0]的位址+4就會變成a[1]
: 這相差非常遠 Orz
: 而且int **Input 這樣傳,不能直接寫Input[i][j] 囧rz
用 void* 傳也不可以寫 input[i][j]
-----
int a[5][5] 和 int** a 是完全不同的結構啊 Orz
所謂可以轉都是語法強制轉型吧 ~____~
跟 FILE* 硬轉成 double* 一樣沒有意義...
--
Favonia --- 我的個人版,歡迎參觀 :D
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.41
推
12/10 01:13, , 1F
12/10 01:13, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):