指標問題,結果能輸出hello求解釋

2022-04-06 15:00:43 字數 1298 閱讀 1576

1樓:匿名使用者

程式很正確呀。

為了區別起見,我把fun()中的參量p改作pf,對程式不會有影響。

extern void fun(char**p);//函式宣告static char *pstr= "hello";//指標pstr只可以本檔案訪問。可以給指標初始化時賦乙個字串給它,該指標就指向該字串

void fun(char**pf)//介面函式。**p,是乙個指向指標的指標。

void main()

fun(&p)執行後,乙個char**的參量pf生成,它被賦予的初值是&p。即pf=&p

你應該知道&p指向p,那麼pf也指向p。

*pf就是p,是同乙個變數。

讓*pf指向另乙個字串「hello「

p也就指向了"hello"

自然能輸出。

2樓:眼眶的濕潤

首先pstr是乙個靜態的字元型的指標變數,它被賦了乙個初值,也就是"hello"在記憶體中的位址

然後主函式裡定義了乙個指標p,被置為空,並且把它的位址作為引數傳遞進fun函式

注意fun函式的形參型別是指向指標的指標,所以fun函式裡的*p=pstr就相當於在main函式裡寫上p=pstr,因此p就相當於字串"hello"的首位址,所以

printf("%s\n", p);可以打出hello如果你改成

printf("%c\n", *p);那麼應該可以打出h

3樓:

#include

static char *pstr="hello"; /*把字串首個字元的位址賦給pstr,pstr為指標型別*/

void fun(char **p)

void main()

4樓:匿名使用者

很常用的為指標賦值的方法,如果你讀過一些關於dx的**,你會很頻繁的遇到類似於

void fun(cha**p)

的**。

5樓:匿名使用者

fun 的行參是二維指標 main函式中實參為&p也是二維指標, fun中*p是一維指標。 相當於 *(&p)= pstr,

也就是p = pstr

6樓:聽不清啊

p是指向字元的指標,在fun呼叫時被賦值為pstr的值,即指向"hello",所以就在下面輸出了。

7樓:旅玟勢盼夏

*p指向arr[1],輸出*p即輸出arr[1]=h;

p指向arr的首位址,輸出p時,便會將整個陣列內的值輸出。

指向字串的指標printf輸出問題?

這裡的第三行是寫錯了。應該是。printf 3 str is c str 才對的。p格式符用來輸出變數在記憶體中的位址,是乙個十六進位製數 常用的格式符有 d是十進位制格式,o是八進位制格式,x是十六進位制格式。因為str是char 所以,str是乙個字元。str是乙個字元陣列的首位址,str就是這...

c語言指標問題,求解答,C語言中的指標問題,求解答

1,是取值運算子,因為你要判斷tt的值的情況,所以要用 2,tt 相當於 tt tt 1 這個是指標向後移動,不需要取值,謝謝,望採納 你的tt是指標吧。tt指向的是 位址 比如位址值為 10ff 1000 tt是取這個位址中儲存的資料,而tt 意思把tt指向的位址值 1,即tt現在指向了 10ff...

c語言求s12345並輸出結果

include define n 5 定義符號常量 求出每一項階乘值的函式 int fact int n int main 執行結果 includeint main sum a printf d n sum return 0 這個絕對正確 main q j return sum includeint...