[問題] []或*當成參數傳入的問題

看板C_and_CPP (C/C++)作者 (今年要衝一發)時間16年前 (2009/04/13 02:49), 編輯推噓0(005)
留言5則, 4人參與, 最新討論串1/1
之前有許多前人的文章討論到char*和char[]的差別 讓我對兩者不同的宣告方式的差別有更進一步的了解 非常感謝大家 但日前寫程式時碰到一個問題 就是如果要傳遞參數時 兩者的寫法到底差在哪? 假設我要傳一個二維陣列char send[][]到function中 那寫成 function(char receive[][]); 和 function(char **receive); 的差別在哪呢?? (假設send[][]存在於main中 沒有local不local的問題) 另外 我記得沒錯的話 前者的寫法有問題 因為一定要指定第二維的長度對吧?? (why?) 但如果這麼麻煩 為什麼不全部用char **來接這個陣列就好了呢?? 還是說 今天如果我宣告的send[][]方式不一樣 (例如改用send **宣告 或大小有指定的send[A][B] 甚至*send[]這種混合式的) 我傳遞的方式也要跟著不一樣? 麻煩大家解惑 非常感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.236.49 ※ 編輯: coolbeela 來自: 118.168.236.49 (04/13 02:50)

04/13 08:22, , 1F
不指定第二維長度,它不知道第一維一次要跳多遠。
04/13 08:22, 1F

04/13 09:00, , 2F
** 跟 [][] 差很多,後者保證空間連續,存取效率都有差。
04/13 09:00, 2F

04/13 09:00, , 3F
而且這兩種 type 不能互轉。
04/13 09:00, 3F

04/13 12:07, , 4F
[]好像傳值的時候會複製整個array *就一個指標
04/13 12:07, 4F

04/13 14:25, , 5F
樓上別亂說XD
04/13 14:25, 5F
文章代碼(AID): #19uZV3lE (C_and_CPP)
文章代碼(AID): #19uZV3lE (C_and_CPP)