1. 程式人生 > >指標與陣列的區別,以及指標的空間開闢問題

指標與陣列的區別,以及指標的空間開闢問題

#include <iostream>

using namespace std;

int main()
{
    char* p = "wanglibao";
    char* a = new char[10];
   // p[0] = 'e';
    a[0] = 'e';
    cout << *a << endl;
    return 0;
}


 陣列開闢空間只能在棧或者靜態空間(全域性的),而指標則可以任意開闢,可以在堆疊靜態都行。

像上邊程式碼中,指標p指向一個棧中的字面值常量。a指向一個堆中的空間,所以可以用a[0]來直接操作該數,也可以用指標來操作。*a 輸出的是第一個位元組的內容。

但p[0] 在編譯時不會有問題,執行時會出錯。

#include <iostream>

using namespace std;

int main()
{
    char* p = "wanglibao";
    char* a = new char[10];
   // p[0] = 'e';
    a[0] = 'e';
    a[2] = 'd';
    cout << *(a+1) << endl;
    return 0;
}

開闢空間後,其中系統會預設存入資料。