指標的指標

2022-03-29 07:18:47 字數 2326 閱讀 7905

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...