指標與陣列的區別,以及指標的空間開闢問題
阿新 • • 發佈:2019-02-01
#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;
}
開闢空間後,其中系統會預設存入資料。