精密仪器设计基础:多谢大家

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 06:09:36
12。以下程序的输出的结果是--
#define PR (ar) printf("ss=%d,"ar)
main() {int j,a[]=[1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
switch (j)
{case 1:
case 2:PR 9*p++); break;
case 3:PR(*(--p));
}
}

答案是ss=9,ss=9,ss=11这个答案怎么得出来的啊?

12。执行以下程序后m的值是
int a[2] [3]={{1,213},{4,5,6}};
int m,*p;
p=&a[0][0];
m=(*p)*(*(p2))*(*(p4));
答案是15,什么意思?怎么得出来的啊???????
*p=a+5;怎么就是第六位数拉

谢谢

11.
*p指向a+5,即为11,
for循环,第一次,j=3,
执行case 3后的语句*(--p)即为往前挪一个地址,值为
  9;

第二次:
执行case 2后的语句*(p++),p++整个值不变,仍指向9,输出

但经过P++后,p本身的值加一,(指向后一位)

第三次:
执行case 1,执行case 2,(直到遇见break为止,或结素)
p本身的值上一次循环已经加一了,所以输出9的后一位,
即为11

12.
p=&a[0][0]
所以*p=a[0][0]=1,
*(p+2)=3
*(p+4)=5
所以m=(*p)*(*(p+2))*(*(p+4))=3*5=15;
你p与2间好象少打了加号