**塊
int i = 10;
int*p = &i;
記憶體分析
使用解引用符 * 對該指標指向的記憶體進行操作
**塊
利用指標變數改變i的值
int i = 10;
int*p = &i;
*p = 20;
**塊
int arr[4];
記憶體分析
指標和陣列本身沒有任何關係,只是在訪問指標或陣列的時候有兩種訪問方法:
1).以指標的形式訪問
2).以下標的形式訪問
char *p = "abcde";
char p = "12345";
讀取字元c
1).以指標的形式訪問:*(p+2)
先取出p中的位址值,再加上2個字元的偏移量,得到新的位址,然後取出這個位址存放的值
2).以下標的形式訪問:p[2]
編譯器會將下標的形式轉化為指標的形式然後進行才操作
讀取字元『4』
1).以指標的形式訪問:*(p+3)
這時p代表的是陣列首元素的位址,再加上3個元素大小(這裡是字元)的偏移量,得到新的位址,然後取出這個位址存放的值
2).以下標的形式訪問:p[3]
編譯器會將下標的形式轉化為指標的形式然後進行才操作
所以兩種訪問形式在本質上是相同的
1)指標陣列是乙個陣列,它裡面的元素都是指標
2)陣列指標是乙個指標,它指向的是乙個陣列
&arr 與 arr的區別arr表示陣列首元素的位址,&arr表示陣列的位址,兩者在數值上是相同的,但意義不同
函式指標的定義
int fun(int x ,int y);//fun函式的宣告
int (*p)(int x,int y);//fun函式對應型別的函式指標p的定義
p的型別為int (*)(int,int),這表示p是乙個函式指標,函式的引數有兩個型別都是int,函式的返回值型別為int
函式指標的使用
int fun(int
x ,int
y)int a,b;
int (*p)(int
x,int
y) = fun;
(*p)(a,b);//與fun(a,b)相同
注意:函式指標的可賦的值只能是與之型別相對應的指標
這是乙個陣列,其中的元素是函式指標
下面分別是實現加減乘除功能的四個函式的宣告,他們的函式引數個數型別即函式返回值的型別均相同,故可以將他們的函式位址都放在同乙個函式指標陣列中
int add(int x ,int y);
int sub(int x ,int y);
int mul(int x ,int y);
int div(int x ,int y);
int (*p[4])(int x,int y);
pf[0] = add;//可直接用函式名賦值
pf[1] = ⊂//也可以用取位址符&加上函式名
//函式呼叫
pf[0](a,b);
pf[1](a,b);
將在同一時刻可能呼叫相同型別的不同函式的**簡化
#define _crt_secure_no_warnings
#include
int add(int
x, int
y)int sub(int
x, int
y)int mul(int
x, int
y)int div(int
x, int
y)int meau()
int main()
; char ch[4] = "+-*/";
do} while (input);
return
0;}
上面**可通過轉移表轉化為下面的**
#define _crt_secure_no_warnings
#include
int add(int
x, int
y)int sub(int
x, int
y)int mul(int
x, int
y)int div(int
x, int
y)int meau()
int main()
;//函式指標陣列
char ch[4] = "+-*/";
doelse
if (input == 0)
else
} while (input);
return
0;}
這句話看起來很難理解,其實這就是乙個指標,只不過它指向的是乙個函式指標陣列
上面已經定義了乙個函式指標陣列,再定義乙個指標指向這個陣列,這個指標即為函式指標陣列指標
int (*pf[4])(int
x,int
y);int (*(
*p)[4])(int
x,int
y) = &pf;//p即為函式指標陣列指標
指標陣列和陣列指標
有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向...
指標陣列和陣列指標
理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...
指標陣列和陣列指標
該文時自己對指標陣列用法的一點總結,還望高手指點不足原文如下 由於以前對指標陣列不太明白,所以自己寫了 乙個小的測試程式來驗證了自己的猜測,先總結如下 指標陣列,由名字就可以知道的該陣列中的成員都是為指標的。其定義的方法為 char p 5 該初定義乙個包含5個char 型別的陣列的指標,由於p本身...