【发布时间】:2014-03-10 13:09:55
【问题描述】:
运行以下代码将打印出orld。这里发生了什么? &(p[*(i + j)]) 到底是做什么的?
#include <stdio.h>
char p[] = "HelloWorld";
int i[] = {2,1,3,5,6}, j = 4;
int main()
{
printf(&(p[*(i + j)]));
return 0;
}
【问题讨论】:
-
提示:指针算法
-
p 是
char[]并且你将 &p 传递给 printf。开头由表达式*(i+j) == 6给出,它将打印整个字符数组,直到遇到转义字符\0。如果您只想打印该位置的字符,请尝试p[*(i+j)] -
这是执行吗?我希望没有人在现实生活中写出这样的东西。
-
从stackoverflow.com/questions/381542/…开始,解释了最里面的部分。
-
@Jens:这是我偶然发现的一个练习。
标签: c