指標陣列 陣列指標

2021-09-27 01:56:33 字數 2270 閱讀 5514

在前面的部落格裡,我們已經學過了指標陣列。

指標陣列是乙個存放指標的陣列

自行複習哦。。。。

陣列指標的定義:

陣列指標是陣列? 還是指標?

答案:指標。

我們已經熟悉:整型指標:int pint;能夠指向整型資料的指標。浮點型指標:floatpf;能夠指向浮點型資料的指標。

那麼陣列指標應該是:能夠指向陣列的指標。

下面**哪個是陣列指標?

int *p1[10];

int (*p2)[10];

//p1,p2分別是什麼?

解釋:

int (*p)[10];

//解釋::p先和*結合,說明p是乙個指標變數,

然後指著指向的是乙個大小為10個整型的陣列。

所以p是乙個指標,指 向乙個陣列,叫陣列指標

//這裡要注意:的優先順序要高於*號的,所以必須加上()來保證p先和*結合。

對於下面的陣列:

int arr[10];
arr 和 &arr分別是啥?

我們知道arr是陣列名,陣列名代表首元素的位址。

那麼&arr陣列名代表啥?

我們來看一段**:

由執行結果看得出陣列名和&陣列名列印的位址是一樣的。

那麼兩個真的是一樣的嗎?

我們繼續看一段**:

根據上面的**,我們發現&arr和arr,雖然值是一樣的,但是意義是不一樣的。

陣列的位址+1,跳過整個陣列的大小,所以 &arr+1 相對於 &arr 的差值40。

那陣列指標是怎麼使用的呢?

既然陣列指標指向的是陣列,那陣列指標存放的應該是陣列的位址。

讓我們看乙個陣列指標的使用:

#include#includevoid print_arr1(int arr[3][5], int row, int col)

printf("\n"); }}

void print_arr2(int(*arr)[5], int row, int col)

printf("\n"); }}

int main()

; print_arr1(arr, 3, 5);

//陣列名arr,表示首元素的位址

//但是二維陣列首元素是二維陣列的第一行

//所以這裡傳遞的arr,其實相當於第一行的位址,是一維陣列的位址

//可以用陣列指標接受

print_arr2(arr, 3, 5);

system("pause");

return 0;

}

學習了指標陣列和陣列指標讓我們看一下下面的**是什麼意思?

int arr[5];//指標陣列(整型陣列)

int *parr1[10];//陣列指標parr1和先結合,parr1是乙個陣列,有十個元素,每個元素是乙個整形指標int*

int (*parr2)[10];//:p先和*結合,說明p是乙個指標變數,然後指著指向的是乙個大小為10個整型的陣列。所以p是乙個指標,指向乙個陣列,叫陣列指標。

int(*parr3[10])[5];//是乙個陣列 ,裡面存10個陣列指標 乙個指標指向乙個整型陣列 整型陣列裡有5個整型

陣列,指標,指標陣列,陣列指標

指標是在32位系統下佔四個位元組,64位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...

指標, 指標的指標, 陣列, 指標陣列, 陣列指標

指標 int a 10 int p a 指標的指標 int b 20 int p b int p2p p 簡單陣列 int c 10 整數陣列,含有10個整數元素 也就是說每乙個元素都是整數 指標陣列 int p 10 指標陣列,含有10個指標元素 也就是說每乙個元素都是指標 陣列指標 int p ...

指標,陣列指標,指標陣列

1.指標 指標可以看成乙個變數,指標所佔記憶體的大小和處理器的定址空間大小有關,32位處理器指標大小為4個位元組,64位處理指標大小為8個位元組。int p 定義乙個int型別的指標,p就可以看成乙個變數,p的值為0,表示p指向0位址 p也是占用記憶體的,編譯器在棧上為p分配記憶體,儲存p的值0,0...