[問題] main的傳入值argv的問題..

看板C_and_CPP作者 (雞飛城市)時間16年前 (2009/05/11 08:55), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/2 (看更多)
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)

05/11 16:59, , 1F
argv[1][0], argv[2][1], argv[3][2], 基本上當成char
05/11 16:59, 1F

05/11 17:00, , 2F
string array就是了; 話說小弟也只用過*argv[]....
05/11 17:00, 2F

05/11 17:24, , 3F
應該不能說argv[1]="abc",而是記憶體裡面有個字串"abc",而
05/11 17:24, 3F

05/11 17:25, , 4F
argv[1]內存放指向該字串起始位址。換個方向想,不管你argv是
05/11 17:25, 4F

05/11 17:26, , 5F
怎麼宣告,傳過來的都一樣是3個(此例)指標
05/11 17:26, 5F

05/11 17:26, , 6F
打錯,此例是4個 (0~3)
05/11 17:26, 6F

05/11 17:32, , 7F
你可以用memcpy函數來把記憶體裡的"abc"(非變數),存到變數裡
05/11 17:32, 7F
文章代碼(AID): #1A1-VcPW (C_and_CPP)
文章代碼(AID): #1A1-VcPW (C_and_CPP)