誰能請幫助我理解下面的代碼:奇怪的C語法1 [「ABCDE」]?
int d = 4;
printf(&d["Hay!Hello %c\n"], &4["BuddyWorld"]); // Hello (some address in char)
printf(&d["Hay!Hello %c\n"], 4["BuddyWorld"]); // Hello y
printf(&d["Hay!Hello %s\n"], 4["BuddyWorld"]); // Segmentation fault
printf(&d["Hay!Hello %s\n"], &4["BuddyWorld"]); // Hello yWorld
printf("d[Hay!Hello %s\n"], &4["BuddyWorld"]);
/* warning: passing argument 1 of 'printf' makes pointer
from integer without a cast */
什麼是完全d []或& d []操作? (d是整數) 爲什麼&4["BuddyWorld"]
和4[BuddyWorld]
產生不同的值? (分別爲'W'和'y')
'a [i]'和'我[a]'都是相同的,'*(a + i)'。這有幫助嗎? –
但是我仍然沒有明白爲什麼'&4 [BuddyWorld]'和'4 [BuddyWorld]'產生不同的值? (分別是'W'和'y') – zeronone
@zeronone 4 [「BuddyWorld」]是第五個字符'y''。 '&4 [「BuddyWorld」]是它的地址,即帶有偏移量的「BuddyWorld」的地址。 –