指標深度理解

2021-08-20 19:51:51 字數 1401 閱讀 4988

指標陣列

乙個陣列,若其元素均為指標型別資料,稱為指標陣列。 也就是說,指標陣列中每乙個元素都相當於乙個指標變數。其詳細形式應該如下: *a[0], ...*a[n]. 每乙個陣列裡面儲存的是其指向的位址;一維指標陣列的定義形式為:型別名 *陣列名[陣列長度]

例如:int *p[4],由於比*優先順序更高,因此p先與[4]結合,形成p[4]的形式,這顯然是陣列形式。然後再與p前面的*結合,*表示此陣列是指標型別的,每個陣列元素都指向乙個整型變數。

int *arr[5];
陣列指標 

陣列指標,是指標

整形指標:int * point;//指向整形資料的指標

浮點型指標:float *p; //指向浮點型資料的指標

乙個簡單的陣列指標定義如下:

int (*p)[10];

//p先和*結合,說明p是乙個指標變數,然後指向乙個大為10個整形的陣列,所以p是乙個指標,指向乙個陣列,叫陣列指標。

陣列指標的使用:

int arr[10] =;

int *p1 = &arr;

int *p2[10] = &arr;

//通過驗證,p2是陣列指標,所以存放位址是合適的

函式指標 

首先思考下面這段**

#includevoid test()

int main()

結果為:

輸出的兩個位址是test函式的位址,函式也是有位址的,但是我們如何將他儲存下來呢?

這就用到了函式指標

void test()

void (*p1)();

void *p2();

首先,能夠儲存位址,就要求p1和p2是乙個指標,上面的**中只有p1可以存放,p1先和*結合,說明p1是乙個指標,指向的是乙個函式,指向的函式無引數,返回型別是void

函式指標陣列 

函式指標陣列是把位址存放到乙個陣列中,這個陣列就是函式指標陣列,以下是函式指標的陣列的例子:

int (*arr[10])();
arr和[ ]先結合,說明是arr是陣列,陣列內容是int(*)()型別的函式指標

指向函式指標陣列的指標 

理解:指向函式指標是在的指標是乙個 指標,指標指向乙個陣列,陣列元素都是函式指標

定義:

void test(const char* str)

int main()

深度理解指標

首先,指標是什麼呢?我們看這樣一段 includeint main 知道了這些以後,讓我們再來看幾個有關指標的定義。指標陣列 指標陣列是陣列,是乙個存放指標的陣列。舉個栗子 int arr1 10 表示每個陣列元素是一級指標,int表示指標指示的型別是整型 char arr2 4 表示每個陣列元素是...

C 指標的深度理解

筆者會從各種的例子和面試題入手,將逐步去分析指標的知識點和指標的一些高階的用法。第乙個例子,也許一些人會疑惑為什麼t是512了,先看下面的圖 從筆者自己畫的圖分析,引用 這個符號返回的是這個型別最低位的位址而不是最高位數的位址,還有就是int型指標和char型的指標的區別到底在 不同型別的指標唯一區...

深度理解指標及相關概念

2.指標變數 指標變數是變數,具有儲存空間。就像int,float等型別一樣,當然,指標有別的變數不具有的特殊用法。1.指標的型別 我們將type 叫做指標的型別,type指的是指標所指向的型別,type是指最後乙個 之前所有的東西,例如 char p,它的type部分就為char char p,它...