如果a=3和b=5,这意味着什么?

printf(&a["Ya!Hello! how is this? %s\n"], &b["junk/super"]);

我知道arr[4]意味着*(arr+4)所以我需要知道像"hi there"这样的表达式意味着什么?
编辑-问题可能更清晰:
当字符串用作数组下标时,它传递什么值?
为什么以上的输出是Hello! how is this? super

最佳答案

也就是说,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

我希望你能自己解释剩下的。

关于c - 像arr [“hi there”]这样的表达意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6767350/

10-09 04:18