[問題] 關於指標與命令列參數的問題

看板C_and_CPP作者 (為了某些事)時間13年前 (2012/02/04 06:46), 編輯推噓0(004)
留言4則, 4人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 依此網頁 http://moodle.ncnu.edu.tw/mod/resource/view.php?id=58756 char *x[3]; // x: an array[3] of pointer to char 後面的註解我的理解是..是有三個指標的陣列 而用sizeof(x)檢驗..其值為12(3x4)..也的確是如此.. 但*argv[]似乎就不同了.. 不論*argv[n]..n填入1,2,3.... 還是在命令列參數下.. 其sizeof(argv)的值都是4.. 其結果比較像是上面的網頁所述"(*argv)[]"的意義 不知道為什麼會是如此呢?? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> void main(int argc,char *argv[]) { char *x[3]; char (*a)[3]; printf ("sizeof(x):%d\n", sizeof(x)); printf ("sizeof(a):%d\n", sizeof(a)); printf ("sizeof(argv):%d\n", sizeof(argv); } 補充說明(Supplement): 煩請好心的前輩解惑一下..:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.145.68 ※ 編輯: ForOthers 來自: 219.87.145.68 (02/04 14:47)

02/04 14:48, , 1F
等同於 char**argv 沒有傳陣列這回事
02/04 14:48, 1F

02/04 17:39, , 2F
這是定義,sizeof 好像不是 function call,compiler 做掉
02/04 17:39, 2F

02/04 18:12, , 3F
不太懂樓上兩位的意思..可以講詳細點嗎??:)
02/04 18:12, 3F

02/04 20:16, , 4F
sizeof是運算子 不是函數
02/04 20:16, 4F
文章代碼(AID): #1FBDH2qU (C_and_CPP)
文章代碼(AID): #1FBDH2qU (C_and_CPP)