我想大声告诉你2017-06-30 09:59:22
想必你是問的是 int main(int argc, char *argv[])
吧。其實你想這麼寫也完全沒什麼問題的 int main(int argc, char **argv)
。
如果你定義一個 char *s = '2333'
,那這個 s
指的是什麼?字串的首地址吧。同理,*argv[1]
存的是什麼?第一個字串的首地址吧。你可以簡單地這麼理解,要深入神馬的你可以去翻書。
char *s = "23333";
char *z = "34444";
char *argv[] = {s, z};
int a = 0;
int b = 1;
int c[] = {a, b};
有意思了吧~其實有時候你想理解,就是換個寫法的問題。
PHP中文网2017-06-30 09:59:22
樓主是想說
int main(int argc, char *argv[])
中的*argv[]
吧?
char *argv[]
是一個數組,數組的元素是char *
,每一個char *
都用來指向一個字串的首位址。所以argv[1]就是指向第二個字串的首位址(我們假設第一個字串是argv[0])。所以說,argv[1]
也還是位址,是一個字串的首位址。
數組和指標只有在作為函數參數時候才可以認為是一樣的,所以這裡的char *argv[]
也可以寫成char **argv
,不知道這樣是不是好理解些。
巴扎黑2017-06-30 09:59:22
這裡*argv[]
定義的是指標數組,有n個指標類型的數組元素(argv[0],argv[1],...,argv[n]
)
(argv[11 ]
是指針數組的第2個元素,仍是一個指針,*(argv+1)
是指針數組的第2個元素指向的值,是一個值。
argv[1]是地址,具體怎麼調用,要結合具體的上下文程式碼來分析。
一般會把
argv[1]放在另一個指標裡
int *p = (int*)argv[1];,然後下文
*p取得
*argv[1]的值。