我幾乎可以肯定,你根本不明白數組和指針在C和C++。
數組如何在C和C++中工作?
char str[]="banti is a nice girl";
該行創建一個字符數組。
['b','a','n','t','i',' ','i','s',' ','a',' ','n','i','c','e',' ','g','i','r','l','\0']
^
str
陣是你必須[]
之間是什麼,它的存儲在內存中的某個地方;
您可以通過指針str
訪問它。
str+6
意味着指針str
將6
元素移動到它指向的元素之後。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
{'b','a','n','t','i',' ','i','s',' ','a',' ','n','i','c','e',' ','g','i','r','l','\0'}
^ ^
str str+6
str[6]
意味着*(str+6)
,這意味着得到str+6
的價值。
str
char*
是,str+6
也char*
,但*(str+6)
是char
,等於'i'
;
char
不能隱式轉換爲char*
。
什麼是printf
,當你給它的格式爲字符串%s
?
它期望你給它char*
(指針指向char
);
它使的char*
你給(讓我們命名副本copy
),並執行類似副本:
while((*copy)!='\0'){
//print out *copy;
++copy;
}
所以,它打印char
從後陣char
,直至符合'\0'
。
此代碼無法編譯,您在第一行中缺少'*'。 – 2014-09-28 08:50:36
編輯該程序。 – Rishu 2014-09-28 08:51:50
'str [6]'是'char',而不是'char *'。 'str'表示'str'的第一個元素的地址已經被評估爲一個指針。 – BLUEPIXY 2014-09-28 08:52:05