char *str2[4] = {"Taiwan", "Germany", "France", "Swedn"};
問題:printf("%s\n", *(str2+2)+4)
這條語句的目的是打印 str2 數組中第三個字符串從第五個字符開始的子字符串。
分析 str2 的內容:
str2[0] 是 "Taiwan"
str2[1] 是 "Germany"
str2[2] 是 "France"
str2[3] 是 "Swedn"
解析 *(str2+2):
str2+2 指向數組中的第三個元素,即字符串 "France"。
*(str2+2) 解引用這個指針,得到字符串 "France"。
解析 *(str2+2)+4:
*(str2+2) 得到 "France"。
*(str2+2)+4 是指向字符串 "France" 中第五個字符的指針(0-based 索引)。
*(str2+2)+4 指向字符串 "France" 中第五個字符 'c' 及其後的字符。
因此,printf("%s\n", *(str2+2)+4) 會打印字符串 "ce"。
總結:這條語句會打印出 str2[2] 即 "France" 從第五個字符開始的子字符串 "ce"。