请编程高手们再帮帮忙解释一下下面的几个程序.

来源:百度知道 编辑:UC知道 时间:2024/05/05 09:11:04
第一个是:
f(int b[],int n)
{
int i,r;
r=1;
for(i=0;i<=n;i++) r=r*b[i];
return r;
}
main()

int x,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
}
第二个是:
main( )
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)printf("%d ",p[i]);
} 为什么输出结果是:5 3
我是程序有点看不懂,稍微解释一下嘛.比如第一个程序中x=f(a,3)是干什么的?

. 0 1 2
0 9 8 7
1 6 5 4
2 3 2 1
这个3*3的数组是这个样子的你一看就知道是5和3了0,1,2只是下标!!!
x=f(a,3)是将a数组和3做为参数传递给函数f(),经过f计算后将r所得的值赋值给x,还有什么不懂的吗

第一个答案是120,是2*3*4*5=120。f(a,3)是a[0]乘到a[3]一共是0123四个数相乘。没什么问题啊

第二个也没错啊,*p=&x[1][1],那么*p="54321"输出p[0]、p[2]当然是5和3喽。