1、
short int i;
char a;
short int * pi;
i=50;
pi=&i;
----------------指標的指標,濃重出廠
short int * * ppi; //這是乙個指向指標的指標,注意有兩個*號
ppi=π
結果:ppi是pi的位址值
*ppi 是 pi位址值裡面的內容,也就是 i的位址值。 *ppi(等價於pi,前面有宣告ppi=π 前面加個*號,雙重否定)
**ppi 就是i的內容。(因為*ppi=pi,所以**ppi=*pi=i)
2、例二:
#include "stdio.h
"void find1(char array, char search, char *pa)
else
if (*(array+i)==0
)
}}int
main()
; //
待查詢的字串
char a='
d'; //
設定要查詢的字元
char *p=0; //
如果查詢到後指標p將指向字串中查詢到的第乙個字元的位址。
find1(str,a,p); //
呼叫函式以實現所要操作。
if (0==p )
else
}
上面**,你認為會是輸出什麼呢?
執行試試。
唉!怎麼輸出的是:沒有找到!
而不是:找到了,……。
明明a值為』d』,而str字串的第四個字元是』d』,應該找得到呀!
再看函式定義處:void find1(char array, char search, char * pa)
看呼叫處:find1(str,a,p);
依我在第五篇的分析方法,函式呼叫時會對每乙個引數進行乙個隱含的賦值操作。
整個呼叫如下:
array=str;
search=a;
pa=p; //請注意:以上三句是呼叫時隱含的動作。//個人總結, 看函式的介面部分:exchg2(int *px,int *py),請注意:引數px,py都是指標。
// 再看呼叫處:exchg2(&a, &b) int i; 等價於px=&a;py=&b;
//它將a的位址(&a)代入到px,b的位址(&b)代入到py。同上面的值傳遞一樣,函式呼叫時作了兩個隱含的操作:將&a,&b的值賦值給了px,py。
for (i=0;*(array+i)!=0;i++)
else if (*(array+i)==0)
}哦!引數pa與引數search的傳遞並沒有什麼不同,都是值傳遞嘛(小語:位址傳遞其實就是位址值傳遞嘛)!所以對形參變數pa值(當然值是乙個位址值)的修改並不會改變實參變數p值,因此p的值並沒有改變(即p的指向並沒有被改變)。
(如果還有疑問,再看一看《第五篇:函式引數的傳遞》了。)
修正版:
#include "stdio.h
"void find1(char array, char search, char **pa)
else
if (*(array+i)==0
)
}}int
main()
; //
待查詢的字串
char a='
d'; //
設定要查詢的字元
char *p=0; //
如果查詢到後指標p將指向字串中查詢到的第乙個字元的位址。
find1(str,a,&p); //
呼叫函式以實現所要操作。
if (0==p )
else
}
完整分析版:
#include "stdio.h
"void find1(char array, char search, char *pa)
else
if (*(array+i)==0
)
}}int
main()
; //
待查詢的字串
char a='
d'; //
設定要查詢的字元
char *p=0; //
如果查詢到後指標p將指向字串中查詢到的第乙個字元的位址。
find1(str,a,&p); //
呼叫函式以實現所要操作。
if (0==p )
else
}
指標 陣列指標 指標陣列 指向指標的指標
程式中一般通過變數名對變數進行訪問操作,其實質是通過位址進行的。對變數的訪問分為直接訪問和間接訪問,如語句 printf d i 執行的時候,根據變數名 與位址的對應關係,找到i的位址,依次取相應的位元組數中的資料 即i的值 把它輸出。這種按照變數位址訪問變數值的方式成為直接訪問 還可以將變數i的位...
指標, 指標的指標, 陣列, 指標陣列, 陣列指標
指標 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 ...
函式指標 指標函式 指標的指標 指標陣列
一 函式指標 首先它是乙個指標,只是這個指標指向的是乙個函式。指標變數可以指向變數的位址 陣列 字串 動態分配位址,同時也可指向乙個函式,每個函式在編譯的時候,系統會分配給該函式乙個入口位址,函式名表示這個入口位址,那麼指向函式的指標變數稱為函式指標變數。表示 struct file operati...