看板 C_and_CPP 關於我們 聯絡資訊
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