int oddNums[5] = {1, 3, 5, 7, 9};
這創建了一個數組5 int
s。如果你參考oddNums[2]
,那會給你5
。如果您參考oddNums
,那是指向int
的指向數組的開頭的指針。所以*oddNums
會給你1,*(oddNums+1)
會給你3,依此類推。
char str[20] = "Hello world";
查看我的關於oddNums
的討論,這裏適用。這也是一個字符串,這意味着它在字母d
後以零結尾。
int *ip = oddNums;
還記得oddNums
是一個指向整數的指針。所以這只是將它複製到另一個int
指針ip
。
char *cp = str + 6;
此值(str + 6)
分配給char
指針cp
。 str
是一個char
指向上面定義的字符串的指針。它指向字符串「Hello world」的開頭。
printf("\n.%d",*(++cp) + *oddNums);
*(++cp)
意味着得到什麼cp
點後cp
已遞增。換句話說,預增量cp
,然後得到它指向的內容。 cp
指向str
+ 6,這是字符串中的w
。但++cp
使它指向「世界」中的'o'。因此*(++cp)
將產生'o'。
然後'o'被添加到任何oddNums
指向。自從我們開始以來,oddNums
沒有發生任何事情,所以它仍然指向整數數組中的1。 *oddNums
表示「給我什麼oddNums
點」,這是1
所以*(++cp) + *oddNums
值將是'o' + 1
,這是「P」(在ASCII序列中的一個字母)。
有趣的是,printf
表示「在打印換行符和句點後打印出您作爲整數給出的東西」(「\ n。%d」)。所以結果會是...... .112
。我認爲。
它需要'#include'和'#include '。 –