1. 程式人生 > >指標陣列,陣列指標,陣列引用

指標陣列,陣列指標,陣列引用

好久不用C++,今天遇到陣列指標又迷糊了,感覺複習一波並記錄下來

陣列引用

定義一個4x3的陣列:

int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 };

定義對陣列的引用:ref是一個大小為3的陣列,是對a[0]的引用;

int(&ref)[3] = arr[0];

在這裡插入圖片描述
若想對整個arr引用,在定義引用時則建立二維陣列:

int(&ref)[4][3] = arr;

指標陣列&陣列指標

指標陣列
指標陣列比較簡單,定義方式為

int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 };
int* p1[4];

從右往左看,首先他是一個大小為4的陣列,再往前看他存放的是int型別的指標,這樣就比較好理解

for (int i=0;i<4;i++)
{
	p1[i] = arr[i]+1;
	cout << *p1[i]<< endl;
}

將arr陣列的每一行的第2個元素的地址賦值到p1,然後輸出
在這裡插入圖片描述

陣列指標
陣列指標的定義和函式指標的定義相似

int(*p2)[3];

從內往外看,先看括號裡他是一個指標,觀察右邊發現他是指向一個大小為10的陣列,往左看,陣列中的元素為int,p2就是指向一個大小為3的int型陣列的指標。

賦值時把陣列的地址傳給指標:

p2 = &arr[0];

這裡arr[0]和&arr[0]的值是一樣的,但是需要傳的是&arr[0],arr[0]是陣列第一個元素的地址,而&arr[0]是第一個陣列的地址。
在這裡插入圖片描述
*p2得到的是陣列的首地址,之後可以按照陣列的訪問方式讀取陣列元素。

還可以通過p2訪問到陣列的其他元素
讓p2指向二維陣列的第2個數組

p2 = &arr[1];

在這裡插入圖片描述
p2[-1]指向第一個陣列,p2[1]指向第三個陣列,p2[2]指向第四個陣列。其實利用的還是陣列的連續性。