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

*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學習者快速成長!