c++ - c語言指標的問題
给我你的怀抱
给我你的怀抱 2017-06-30 09:57:22
0
7
959

*argv[]
argv是位址,*argv[]是地址指向的變數。
既然argv是位址,為什麼可以這樣呼叫argv[1]

给我你的怀抱
给我你的怀抱

全部回覆(7)
曾经蜡笔没有小新

argv[1] 等價於 *(argv+1)

我想大声告诉你

想必你是問的是 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};

有意思了吧~其實有時候你想理解,就是換個寫法的問題。

Ty80

樓主是想說

int main(int argc, char *argv[])

中的*argv[]吧?

char *argv[]是一個數組,數組的元素是char *,每一個char *都用來指向一個字串的首位址。所以argv[1]就是指向第二個字串的首位址(我們假設第一個字串是argv[0])。所以說,argv[1]也還是位址,是一個字串的首位址。

數組和指標只有在作為函數參數時候才可以認為是一樣的,所以這裡的char *argv[]也可以寫成char **argv,不知道這樣是不是好理解些。

刘奇

傳參時類型為*argv[], 相當於**argv,即為指標的指標

巴扎黑

這裡*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]的值。

伊谢尔伦

數組的名稱其實就是一個位址,所以這樣用沒毛病。

为情所困

在C語言中,陣列本來就是個位址

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!