有下列程序: #include<stdio.h> int*f(int*s) { s+=1: s[1]+=6; *s--+=7; return s: }

admin2022-10-25  33

问题 有下列程序:
     #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]的值为9。表达式“+s--+=7”表示将+(s--)指向的元素自增7,即s[0](a[1])的值为9,s向左移动一个整型变量的长度,此时s指向元素1(a[0])。最后将s返回并赋给p。经过函数f的调用可知:p指向数组a的第1个元素,a[1]和a[2]的值为9。综上,输出结果为9,9,1,9。本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/SCkp777K
0

最新回复(0)