运行以下代码将打印出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;
}
最佳答案
char p[] = "HelloWorld";
int i[] = {2,1,3,5,6}, j = 4;
&(p[*(i + j)])
计算如下:
这里的i
是数组i
的基地址
。因此,i+4
将是 数组 i
中第五个元素
的地址
。 *(i+j)
将等于 6
。 P[6]
将在 W
之后为 o
。 &(p[*(i + j)])
将等于到&p[6]
。因此,在 printf
中,您传递的是 o 的地址
,输出 将是 orld
。
关于c - &(p[*(i + j)]) 到底是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22301065/