作者loveme00835 (最愛朴素妍)
看板C_and_CPP
標題Re: [問題]字串的問題
時間Sat Nov 27 01:42:19 2010
※ 引述《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