有下列程序  #include<stdio.h>  int *f(int *s)  {   s+=1;   s[1]+=6;   *s--+=7;   return s;  }  main()  {   int a[5]={1,2,3,4,5},

admin2022-04-02  20

问题 有下列程序
 #include<stdio.h>
 int *f(int *s)
 {
   s+=1;
   s[1]+=6;
   *s--+=7;
   return s;
 }
 main()
 {
   int a[5]={1,2,3,4,5},*p;
   p=f(a);
 printf("%d,%d,%d,%d",a[1],a[2],*p,p[1]);
 }
 程序执行后的输出结果是(          )。

选项 A、2,3,1,2
B、9,9,2,9
C、8,10,2,8
D、9,9,1,9

答案D

解析 程序定义了一个整型数组a,它包含5个整型元素,分别是1,2,3,4,5。数组名a代表数组的首地址,另外还定义整型指针p,将a传给函数f。在函数f中,首先将指针s向右移动一个整型变量的长度,此时s指向元素2(a[1])。s[1](a[2])表示元素3,自增6后s[1](a[2])的值为9。表达式“*s--+=7”表示将*(s--)指向的元素自增7,即s[0](a[1])的值为9,s向左移动一个整型变量的长度,此时s指向元素1(a[0]),最后将s返回赋给p。经过函数f的调用可知:p指向数组a的第一个元素,a[1]和a[2]值为9,综上,输出结果为:9,9,1,9,本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/Phkp777K
0

最新回复(0)