指標的理解

2021-08-11 02:31:02 字數 1340 閱讀 4281

指標陣列本質上是陣列,是乙個存放指標的陣列。

eg:    ①int *arr1[10];   

②char *arr2[10];

③char **arr3[5];

① ② ③ 均為指標陣列,   ①是陣列(int*型別)中元素是 (int*型別) ;

②是陣列(char*型別)中元素是(char*型別);

③ 陣列中存放 二級指標

陣列指標本質上是指標,是乙個指向陣列的指標。 指標變數存放陣列位址

eg:int *pint;   指向整型資料的指標:

float *pf;   指向浮點型資料的指標;

int *p[10];       指標陣列     陣列中存放型別為 int *  型別的指標;

int (*p)[10];     指標陣列    指向整形陣列的指標;

注:       int *p[10];    &     int (*p)[10];

p 先與什麼結合,即可表示 p 本質是什麼 

" [ ] "  的優先順序於  " * " 的優先順序

函式指標本質上是指標,是乙個指向函式的指標,即指標變數儲存的是函式的位址

eg:     void test(char* str);

void (*p)(char*)         //p是乙個指標,並且指向乙個函式,這個函式引數是char*,返回型別是void型 

哪乙個可以存放函式test 的位址?

void  (*p1)();

void  *p2();

首先,能給儲存位址,就要求p1或p2是指標   

p1可以存放。p1先和*結合,即p1是指標,指標指向乙個函式,指向的函式沒有引數,返回值為空

(*(void(*)())0)();  

void (*signal(int,void(*)(int)))(int);    簡化為:void (*)(int) signal(int,void(*)(int)); 

陣列是乙個存放相同型別資料的儲存空間,要把 函式的位址 存到乙個陣列中,那這個陣列就叫函式指標陣列。

如何定義:

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

int *p2[10]();         ×

int (*)()p3[10];      ×    定義常函式指標陣列

用途:轉移表

例子:計算器

指向函式指標陣列的指標,指標指向乙個陣列,陣列的元素都是函式指標

eg:void (*(*a)[10])();                  函式指標陣列的指標



C語言指標的理解以及指標的指標的理解

指標指向的是記憶體位址編號,記憶體位址編號指向的是對應的內容。我們需要乙個變數,來儲存記憶體位址編號,這個變數的值是乙個記憶體位址編號,但是我們可以通過修改變數的值,來不斷的改變記憶體位址編號。但是,我們如果需要改變該記憶體位址編號的值時,就需要對該記憶體位址編號的值進行修改,而不改變記憶體位址編號...

this指標的理解

苦澀的茶 產品開發 先要理解class的意思。class應該理解為一種型別,象int,char一樣,是使用者自定義的型別。用這個型別可以來宣告乙個變數,比如int x,myclass my等等。這樣就像變數x具有int型別一樣,變數my具有myclass型別。理解了這個,就好解釋this了,my裡的...

指標的理解

一級指標 二級指標 指標和陣列 陣列 是多個同型別資料的集合,在物理空間中儲存是連續的,大小相同的空間。指標 指標就是乙個變數,它儲存的是其他變數在記憶體中的位置。當陣列作為引數傳遞給函式時,會退化為指標。指標陣列 int p 10 這就是指標陣列的定義形式,指標陣列本質就是乙個陣列,只不過陣列的每...