Это означает, что printf становится эквивалентным этому:
printf("Hello! how is this? %s\n", "super");
, который будет печатать:
Hello! how is this? super
Демонстрационная версия онлайн: http://ideone.com/PVzUP
Пояснение:
Когда мы пишем char s[]="nawaz;
, а затем s[2]
означает третий символ в строке s
.Мы можем выразить это, написав "nawaz"[2]
, что также означает третий символ в строке "nawaz"
.Мы также можем написать 2["nawaz"]
, что также означает третий символ в строке.В вашем коде printf
использует последнюю форму, то есть в форме 2["nawaz"]
.Однако это необычно.
Так что a["Ya!Hello! how is this? %s\n"]
означает 4-й символ в строке (поскольку значение a
равно 3), и если вы добавите &
перед a
, то &a["Ya!Hello! how is this? %s\n"]
вернется адрес 4-го символа в строке, это означает, что в printf это становится эквивалентным этому:
Hello! how is this? %s\n
И я надеюсь, что вы можете интерпретировать остальное самостоятельно.