看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《aup65797 (有緣人)》之銘言: : #include <stdio.h> : #include <stdlib.h> : void ae(char *data); : int main(int argc, char *argv[]) : { : char *ai="fsfsd"; : ae(&ai); ┌────┬───────┐ │型態 │示意圖 │ ├────┼───────┤ │ │┌─┐ │ │char** ││?├──┐ │ │ │└─┘  │ │ │    │     ↓ │   │    │    ┌─┐│ │char* │ │ai││ │ │ └─┘│ └────┴───────┘  你會生成一個臨時變數, 而這個暫時變數型態是 char**, 指向 ai 這個指標, 然後當引數傳遞給函式 ae(). : system("PAUSE"); : return 0; : } : void ae(char *data) 姑且稱臨時變數為 temp, 為了初始化 data 這個參數, 現在要 把 temp 的值給他, 類似進行這樣的動作: data = temp; ┌───┬───┬───┐ │變數名│ data │ temp │ ├───┼───┼───┤ │型態 │ char*│char**│ └───┴───┴───┘ 等號兩邊的變數型態不一致! gcc一開始就會送你一個警告, 他 就是在講這樣的事情: [Warning] passing argument 1 of 'ae' from incompatible pointer type expected 'char *' but argument is of type 'char **' : { : printf("TEST STRING %s",*data); : } : 請問要怎麼把ai指標的字串傳入另一個副函式裡面呢? : 笨問題請多多指教... 在運算過程中儘量不要讓變數型態的星星數超過兩個 (指向指標 的指標 ), 或是建立出兩個以上星星的臨時變數( 會讓程式更難 寫, 更難看懂), 正確的程式碼應該寫成: http://codepad.org/dio69mcq 還有記得別亂改文章類別... -- ◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去 ████◢█████s ~> T-ara ███ █ ◢█歡迎您的光臨 ███████████恩靜智妍孝敏 ███ ██ 素妍居麗寶藍 ████◥██◤ █████ψmakigoto123 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (11/27 01:50)
james732:推 XD 11/27 01:51
purpose:我覺得他本來可能想自刪,呵呵 11/27 01:54