[問題] function中傳入指標型態問題

看板C_and_CPP作者 (蛋白質)時間14年前 (2011/09/09 18:14), 編輯推噓4(4012)
留言16則, 7人參與, 最新討論串1/2 (看更多)
由於最近常在看別人寫的Code 從中發現一些不太一樣的地方想來請教一下大家 main.h func(char *); main.cpp func(char buffer[]){ } func(char *buffer){ } 主要也就是傳入一個陣列的起始指標 然後在function 中做一些計算後做替換的動作 我使用上結果好像都是一樣的 所以這兩個是一樣的東西嗎? 還是其實是有差異的呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.231.80

09/09 18:30, , 1F
以這例子而言,都一樣, 最後都看作 char* buffer.
09/09 18:30, 1F

09/09 18:30, , 2F
但多維下, char buf[2][3] / (*buf)[3] / **buf 會不同
09/09 18:30, 2F

09/09 18:36, , 3F
感謝解答~
09/09 18:36, 3F

09/09 19:38, , 4F
就我的理解,其實指標跟陣列是一樣的,我是過用[]去
09/09 19:38, 4F

09/09 19:38, , 5F
讀取指標一樣也ok
09/09 19:38, 5F

09/09 19:45, , 6F
不碰到sizeof或初始化參考的話,char [2][3]跟char (*)[3]
09/09 19:45, 6F

09/09 19:45, , 7F
使用上沒有差異吧
09/09 19:45, 7F

09/09 20:05, , 8F
purpose 對於 char[2][3] / char (*)[3] 所言為是
09/09 20:05, 8F

09/09 20:05, , 9F
感謝補充。
09/09 20:05, 9F

09/09 20:58, , 10F
小弟只是說出自己的理解,可拿不出依據,不敢說一定是對的
09/09 20:58, 10F

09/09 20:59, , 11F
到是t大當初說不同,是指什麼的不同,好奇
09/09 20:59, 11F

09/09 21:03, , 12F
自己用 typeid 試試就知道了...
09/09 21:03, 12F

09/09 21:29, , 13F
指標和陣列是完全不一樣的,只是很多地方會自動轉型。
09/09 21:29, 13F

09/09 23:16, , 14F
傳陣列的話 可以當作是常數指標 你在函數裡把傳的東西
09/09 23:16, 14F

09/09 23:17, , 15F
指到別的地方的話 原本的陣列還是指同一個地方
09/09 23:17, 15F

09/09 23:17, , 16F
傳指標的話你動掉就動掉了
09/09 23:17, 16F
文章代碼(AID): #1EQUS2N_ (C_and_CPP)
文章代碼(AID): #1EQUS2N_ (C_and_CPP)