1樓:
1.先說一下實際上這樣的問題不用上來問的。你自己就能很好的解決,你把str[4]換成str就會把一個陣列都輸出出來。
因為str本身就是一個指標,再結合指標那章的知識,實際上%s輸出的就是從str指標開始的後面的所有的數。
2.明白指標和陣列的關係,你可以自己寫一個char *p;然後指向陣列,然後再printf p+3就輸出str第四個字元
3.把%s改成%c就能輸出你想看到的結果,%c輸出一個字元,%s輸出你所輸出的是以某指標開始直到結束的全部字元,比如就拿你的例子說,如果printf(」%s「\n,str);就是輸出str指標後的所有字元,如果printf(」%s「\n,str+2);就是str[2]後的所有字元。
關鍵在明白指標和陣列的關係。char str[100]就是在記憶體中分配了100個char型變數的空間,然後用指標str指向他,陣列的名字實際上就是一個指標,指向陣列的開頭。
2樓:
str[4] 是一個字元
str+4是一個地址
%s 列印時必須使用地址,所以改為str+4就對
3樓:匿名使用者
str[4] 是對應地址的值 , str +4還是個地址指標
c 的陣列問題,關於c語言陣列的一些疑惑?
include void main 正確寫法 include void main include void sum char array,int size void main 正確原因 這裡的char array是形參,sum a,10 中,引數的賦值過程是這樣的 array b,size 10 如...
C 關於char陣列的問題,關於C char型別陣列長度的問題
可為什麼下標引用超出定義沒有錯誤 因為宣告char陣列的時候,b只是被宣告為指向char陣列第一個地址的指標。用操作符取資料的時候,編譯器看成是首地址向後偏移 char型別的長度 序號 超過了界限之後,至於後邊取到什麼意外資料就不一定了。所以一般需要使用char陣列儲存一個長度為n的字串的時候都宣告...
c語言問題關於字元陣列的長度問題
哎。strlen 是在string.h裡面的,getch 是在conio.h裡面的,不過,我用的是cfree,至於其它的編譯器,我就不知道了。至於你的問題,當你仔細看看他們的結果,你就會有結論了。很明顯,strlen q 的值是一樣的,不同的是p的字元長度 而它們的區別,就在於,它們一個有陣列的長度...