作者OpenSkyWin (雞飛城市)
看板C_and_CPP
標題[問題] main的傳入值argv的問題..
時間Mon May 11 16:54:51 2009
hi,all
最近一直在想main函式裡的 argv傳入值的宣告
感覺觀念不是很了解
第1
如果宣告成
char **argv
或
char *argv[]
好像這2者的用法是完全一樣的??
不過就意義上來說,我只知道
第一個宣告成雙重指標
第二個是宣告成字元的指標陣列
第2
爬文當中有一個網友推文說
宣告成 char argv[][]
也是和前兩種的使用方法一樣
可是我這樣宣告就無法編譯...@@
dev-c++的錯誤訊息就直接說
declaration of `argv' as multidimensional array must
have bounds for all dimensions except the first
In function `int main(int)':
第3
假設我在shell下丟參數給程式來執行
program.exe abc def xyz
這時在程式中
argv[0]="program.exe"
argv[1]="abc"
argv[2]="def"
argv[3]="xyz"
那麼我如果想印出參數裡的「字元」
像,"abc"的a、"def"的e、"xyz"的z 時
我要怎麼寫呢...一直寫不出來@@
Thanks!!
--
我從小在溪流邊看到魚兒力爭上游
我就立志以後一定要做大事不要做大官
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.99.203
※ 編輯: OpenSkyWin 來自: 61.228.99.203 (05/11 17:01)
推 VictorTom:argv[1][0], argv[2][1], argv[3][2], 基本上當成char 05/11 16:59
→ VictorTom:string array就是了; 話說小弟也只用過*argv[].... 05/11 17:00
推 zlw:應該不能說argv[1]="abc",而是記憶體裡面有個字串"abc",而 05/11 17:24
→ zlw:argv[1]內存放指向該字串起始位址。換個方向想,不管你argv是 05/11 17:25
→ zlw:怎麼宣告,傳過來的都一樣是3個(此例)指標 05/11 17:26
→ zlw:打錯,此例是4個 (0~3) 05/11 17:26
推 zlw:你可以用memcpy函數來把記憶體裡的"abc"(非變數),存到變數裡 05/11 17:32