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