回覆列表
  • 1 # 錢布斯

    C++/C程式中,指標和陣列在不少地方可以相互替換著用,讓人產生一種錯覺,以為兩者是等價的。

    陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。陣列名對應著(而不是指向)一塊記憶體,其地址與容量在生命期內保持不變,只有陣列的內容可以改變。

    指標可以隨時指向任意型別的記憶體塊,它的特徵是“可變”,所以我們常用指標來操作動態記憶體。

    當陣列作為函式的引數進行傳遞時,該陣列自動退化為同類型的指標。

    所以:

    char a[] = "hello world";

    char *p = a;

    cout<< sizeof(a) << endl; // 12位元組

    cout<< sizeof(p) << endl; // 4位元組

    void Func(char a[100])

    {

    cout<< sizeof(a) << endl; // 4位元組而不是100位元組

    }

  • 中秋節和大豐收的關聯?
  • 酸奶和茄子、韭菜能否同食?