C語言指標小問題

2023-01-01 01:25:17 字數 966 閱讀 7544

1樓:

printf("%c",p[5]); →輸出字串的第五個字元(從0開始)

printf("%c",p+5); →輸出亂碼、或者什麼也沒有,因為p+5是一個32位整型地址,其值大於255,而%c格式輸出的值在0-255之間。改用%d就可以看到p+5的地址值了。

printf("%s",p+5); → 輸出從字串第五個元素開始的字串,因為%s對應的輸出變數是一個地址,然後輸出從該地址開始的一個字串。

printf("%c",*p+5); → 輸出一個字元,先取*p的值,也就是h,然後在對h的ascii值加5,得到的值是m,所以輸出m。

printf("%s",*p+5); → 程式執行出錯,因為%s需要的是一個地址,而*p+5得到的是m。然後編譯器就會把m的ascii值當做一個地址,但是m的值很小,與m的ascii值相同的記憶體地址是系統使用的,使用者不能使用,所以這裡程式執行時會報錯。

2樓:咫魂

首先從定義得知p是字串第一個字母的首地址。

然後逐一的看輸出:

1:以字元的格式輸出p陣列第5號的地址,h是0號,那麼第五號是w,輸出w的地址。

2:以字元的格式輸出p陣列第5號的地址,同上。

3:以字串的格式輸出,從第五個開始輸出。

4:以字元的格式輸出第五號的值!

5:以字元的格式輸出,從第五號開始輸出.

3樓:傲世修羅王

printf("%c",p[5]); // 輸出第五個字元,即wprintf("%c",p+5); // 輸出不確定,假設p=0x0001,那麼即輸出0x0006的內容

printf("%s",p+5); // p + 5指向w,輸出以w開始的字串,即world

printf("%c",*p+5); // 輸出*p所指向的字元值再加5,即 h+5 = m

printf("%s",*p+5); // 輸出不確定

C語言指標問題,C語言指標問題

include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...

C語言,小問題,C語言,一個小問題

n在c語言中的意思是 回車 照著麼說的,while c getchar n 就是 當 從鍵盤讀取一個值,並賦值給c 不等於回車 說白了就是當你輸入回車 就是恩一下 enter 鍵 時,這一段 就執行結束了。例如 while c getchar n 就是說當你敲入回車後,中的東西就不讀了 當然回車之前...

C語言小問題,C語言的一些小問題

include void main int i,j,k int m for i 1 i 9 i for j 0 j 9 j for k 0 k 9 k if 100 i 10 j k i i i j j j k k k m 100 i 10 j k printf waterflower number...