1. 程式人生 > 其它 >指標陣列和陣列指標的區別

指標陣列和陣列指標的區別

技術標籤:c++c語言

指標陣列和陣列指標有什麼區別呢?
陣列指標:陣列的指標,既一個指標,其指向一個數組的地址。
指標陣列:指標的陣列,既一個數組,裡面存放的元素每一個都是一個單獨的指標。

#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解引用得到陣列首個元素的地址;

2、(*p)+i表示通過首個地址+i來得到每個元素的地址;
3、最後對(*p)+i這個地址解引用則可以得到陣列中的真實值。

(p1[i]):
1、p1[i]表示陣列中每個元素的地址,因為指標陣列是指標的集合,其每個元素都相當於一個int
型的指標;
2、直接對p1[i]這個地址解引用則可以得到陣列中的真實值。