看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《SATSUGAI (約翰‧克勞薩二世)》之銘言: : 我爬了一下前面的文 : 都是用動態方式去處理 : 可是我翻課本,他可以直接傳耶? : void printArray(const int a[][3]); : int main(void) : { : int array1[2][3]={{1,2,3},{4,5,6}}; : int array2[2][3]= ......(省略) : printArray(array1); : printArray(array2); : ....以下省略 : 這是課本的example 可是我照做 發現他都會出現warning : incompatitble pointer type : 那為什麼課本可以過 = =" : 雖然說我陣列型態是char...但是也不至於傳不進去吧? void printArray(const int a[2][3]) { int b[2][3]; printf("%x\n", &a); printf("%x\n", a); printf("%x\n", &b); printf("%x\n", b); } int main() { int local_array[2][3]; printf("%x\n", &local_array); printf("%x\n", local_array); printArray(local_array); system("pause"); return 0; } 程式結果: 12ff4c // &local_array 12ff4c // local_array 12fe78 // &a 12ff4c // a 12fe54 // &b 12fe54 // b 嗯..它其實傳了一個pointer進去 也就是說 出現在參數列上的陣列變數a 會有 a != &a 這樣的情形喔XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.15.163
nowar100:sorry我不太懂 就算是一維陣列 &a和a也是不一樣的東西 10/19 19:30
nowar100:所以原PO的意思有什麼特別要表達的嗎? ^^ 10/19 19:31
nowar100:我不太懂這個討論串要討論的東西 XD? 10/19 19:32
QQ29:表達~其實傳到function裡面也是用pointer接 10/19 19:35
QQ29:所以function內 &a和a值不一樣 10/19 19:35
QQ29:call by value 10/19 19:35
twotwoone:原發文者只說印出錯的值而已,誰知道他寫了什麼程式碼 10/19 19:38
QQ29:一樓~ 一維陣列 &a和a印出來是一樣的 10/19 19:43
holymars:欸..我要表達的是 其實參數列上出現的陣列是指標.. 10/19 20:38
holymars:當你寫 void printArray(const int a[2][3]); 的時侯 10/19 20:38
holymars:對Compiler來說是void printArray(const int (*a)[3]); 10/19 20:38
holymars:這是在解釋原po問題那個「為什麼可以直接傳」的問題 10/19 20:39
nowar100:喔喔 謝謝 XD 10/19 21:29