指標陣列和陣列指標的區別
阿新 • • 發佈:2021-02-01
指標陣列和陣列指標有什麼區別呢?
陣列指標:陣列的指標,既一個指標,其指向一個數組的地址。
指標陣列:指標的陣列,既一個數組,裡面存放的元素每一個都是一個單獨的指標。
#include <iostream>
using namespace std;
int main()
{
int temp[5] = { 1,2,3,4,5 };
int(*p)[5] = &temp;
int* p1[5] = { &temp[0],&temp[1],&temp[2],&temp[3],&temp[4] };
for (int i = 0; i < 5; i++)
{
cout << "p[" << i << "] = " << *((*p) + i) << endl;
cout << "p1[" << i << "] = " << *(p1[i]) << endl;
}
return 0;
}
通過列印我們可以對映到陣列指標和指標陣列的定義:
*((*p) + i):
1、p表示整個陣列的地址,對p解引用得到陣列首個元素的地址;
3、最後對(*p)+i這個地址解引用則可以得到陣列中的真實值。
(p1[i]):
1、p1[i]表示陣列中每個元素的地址,因為指標陣列是指標的集合,其每個元素都相當於一個int型的指標;
2、直接對p1[i]這個地址解引用則可以得到陣列中的真實值。