请问下面程序的输出结果是什么?为什么是该结果?

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:05:09
#include <stdio.h>

main()

{
static int x[]={1,2,3};
int s, i, *p=NULL;

s = 1;
p = x;
for (i=0; i<3; i++)
{
s *= *(p+i);
}
printf("%d\n", s);
}

p指向的是x的地址,也就是x[0]
*(p+0)也就是1,同理*(p+1)=2,*(p+3)=3
s是int 型 s*=*(p+i)也就是s=s*(*(p+i))
也就是第一次s=s*1 得s=1
s=s*2 得s=2
s=s*3 得s=s*3=6

数组名本身也相当于一个指针,指向该数组的首地址;
p = x;就是让p也指向了数组的首地址。
p+i就是数组第i个数的地址,那么*(p+i)就是数组第i个数的值
s*=*(p+i)的意思是s=s**(p+i)