第一题:A。
解析:首先得到一个静态数组a[],指针p指向a[0], *(p+3)+=4可写为*(p+3)=*(p+3)+4, p+3的意思是指针移动至a[3]所在单元,*(p+3)是取值,即为9,那么运算*(p+3)+=4得*(p+3)的最终值为13,p由于指向数组初位置则*p为1.
第二题:B。
解析:第一全局变量b=3,先看main函数部分,得到数组a[],从语句 b=fun(&a(1))*b处看fun函数,在这里fun函数是个地址传递,main函数中把a[1]的地址传递给fun函数中的指针*k,在fun的语句b=*(k++)*b中,由于是k++,则先做取值运算,再做k自加,所以*(k++),*k,a[1]的值一样,为12,则b=*(k++)*b运算后得b=24,即fun函数的返回值为24,带回 b=fun(&a(1))*b运算得b=72(这里要注意算式中的第二个b要用全局变量b=3带)。
第三题:C。
解析:同第二题先看main函数,对于语句 n=fun(x); n=fun(y); 由于是顺序结构,则只要看后一句即可;语句n=fun(y)调用fun函数,把值y=1给x,a*=x的意思是a=a*x,即a=3,然后返回函数值至main函数,n=3
第一题:选A
main()
{
static int a〔〕={1,7,3,9,5,11};
int *p=a; // *p=1
*(p+3)+=4; // *(p+3)=9,9+4=13
printf("%d,%d",*p,*(p+3)); //1,13
}
第二题:选B
由于是选择题,所以可以快速选出答案,因为其余选项显然太小
第三体:选C
只要看n=fun(y); 就行了