指標學習日記 指標分類

2021-09-26 07:14:39 字數 1728 閱讀 6572

陣列名取位址 + 1,跳過整個陣列;

&a + 1

int a[3][4]

printf(「%p」,&a+1) //跳過48個位元組

printf(「%p」,a+1) //跳過16個位元組

printf(「%p」,&a[0]+1) //跳過16個位元組

printf(「%p」,a[0]+1) //跳過4個位元組

printf(「%p」,&a[0][0]+1) //跳過4個位元組

3、陣列指標

定義:型別名(*指標變數名)[陣列長度];

int(*p)[4];

定義了乙個指標變數p,該指標指向乙個長度為4、元素為int的陣列;

int a[3][4];

a[i][j] == (a[i] + j) == ((a + i) + j) == ((a + i))[j]

int* p = (int*)a;

p[i * 4 + j];

三、字串與指標

1、定義:

char s = 「hello world !」;

char* ps = 「hello world !」;

四、指向函式的指標

1、函式指標的定義:

把函式宣告中的函式名,換成(*指標變數名);

例如:int add(int a, int b)

int (*p)(int a, int b);

2、函式名即函式入口位址;

p = add;

3、函式指標用途:

主要作為其他函式的引數,將乙個可變的功能傳遞給被調函式,

以提高被調函式的通用性。

4、返回指標的函式

1)、定義:型別名* 函式名(形參列表);

下面是錯誤示例:

int* fn()

int* fn()

;return a + 5;

}2)、野(瘋)指標:如果乙個指標所指向的空間是無效空間,

那麼他就是乙個野指標.

3)、函式返回指標變數時,我們要保證所返回的位址所對應的空間,

在主調函式中依然是有效的(依舊在其生存週期中)。

可行示例:

int* fn()

int g = 9;

int* fn()

int* fn(int a[10])

int* fn()

5、指標陣列:是個陣列,陣列每個元素是個指標。

定義:型別名 * 陣列名[陣列長度]

int* p[n];

6、void指標型別

作為不同指標型別轉換的中轉使用;

int i, 定義乙個整型變數i;

int * p, 定義乙個整型資料的指標變數:

int a[n], 定義乙個整型陣列a,它有n個元素;

int *p[n], 定義指標陣列p,它由n個指向整型資料的指標元素組成;

int §[n],定義陣列指標,p為指向含n個元素的一維陣列的指標變數;

int f(), f 為返回整函式值的函式;

int * p(), p為返回乙個指標的函式,該指標指向整型資料;

int ( p)(),p為指向函式的指標,該函式返回乙個整型值;

int * * p, p是乙個指標變數,它指向乙個指向整型資料的指標變數;

指標運算小結:

1)指標變數可以加(減)乙個整數

2)指標變數賦值

3)兩個指標變數可以相減

4)兩個指標變數比較

兩個指標變數不能進行加法運算

指標以及指標的分類

指標就是有指向的變數,它指向的是和儲存指標本身型別相同的變數的空間,指標有多級指標,以及指標直接指向變數存放空間,二級指標指向的是存放同型別一級指標的空間,多級類推二級指向一級一樣指向它的前一級指標存放空間,下面在介紹指標的分類之前我簡單的通過畫圖展示一下指標和變數之間 指標和指標之間的指向關係 在...

指標學習日記 複習和補充

include int main 結果 i 99 p 99 因為 i i include void f int i int main 結果 i 6 i 6 include int f int i int main 結果 i 6 i 99 如何通過被調函式修改主調函式普通變數的值 1.實參必須為該普通...

指標的分類

指標的分類 1.按指向的物件劃分 整型指標 浮點指標 字元指標 陣列指標 指標陣列 結構體指標 函式指標等。int p int float p float char p char char p array 2 陣列指標 char p parray 2 指標陣列 char p func int 2.按...