目录: 标题| 题干| 答案| 搜索| 相关
问题

有以下程序void func(int *a,int b[]){ b[0]=*


有以下程序void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5]={0}; a=0; b[0]=3; func(&a,b); rintf("%d\n",b[0]);}程序的运行结果是A.6 B.7C.8 D.9

  • A6
  • B7
  • C8
  • D9
参考答案
参考解析:

本题考查数组作为函数形参与实参的使用。题目给出的程序分为两个部分,一个是函数func,该函数有两个形参,一个为整型的指针a,一个为整型的数组b[],这里的b只是一个形参数组名,与main函数中的数组b没有关系。为了区别,将func函数中的数组b用b’表示。func函数实现的功能是将指针a所指向的整型值*a与6相加,并将结果放入数组b’[0]处。main函数首先对整型数据a和数组b进行初始化,初始化后a的值为0,数组b中第一个值b[0]=3。初始化结束后,对函数func进行调用。应当注意,调用函数func时,是将数组b的数组名作为函数的实参。这样调用的结果就是没有把数组元素的值传递给形参数组,而是把实参数组的起始地址传递给形参,b和b’共占有同一段内存,这样形参数组中的值发生变化也将导致实参数组中的值发生变化。题目中虽然main函数初始化使得b[0]=3,但是在调用func函数的过程中,作为该函数形参的数组b’有b’[0]=*a+6=6,故main函数中的实参数组b[0]值也发生改变,变为6。

分类:其他
相关推荐

1、若有程序 fun(int a,int b) { static int c=0

若有程序 fun(int a,int b) { static int c=0 c+=a+b; retum c; } main () { int x=5,y=3,z=7,r; r=fun((y,x+y),z); r=fun(x,y); printf("%d ",r); } 上面程序的输出结果______。A23B15C19D18

2、有以下程序 fun(int a,int b) { if(a>b) retur

有以下程序 fun(int a,int b) { if(a>b) return(a) ; else return(b) ; } main() { int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z); Printf("%d ",r); } 程序运行后的输出结果是A3B6C8D12

3、有如下程序段void fun(int *a, int *b){ int *k

有如下程序段void fun(int *a, int *b){ int *k; k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf("%d %d", a, b);} 程序运行后输出的结果是A.6 3 B.3 6 C.编译出错 D.0 0A6 3 B3 6 C编译出错 D0 0

4、有以下程序void fun(int a,int b,int c){ a=45

有以下程序void fun(int a,int b,int c){ a=456,b=567,c=678;}main(){ int x=10,y=20,z=30; fun(x,y,z); printf("%d,%d,%d\n",x,y,z);}输出结果是A.10,20,30 ...

5、有如下程序 int func(int a,int b) { return(

有如下程序int func(int a,int b){return(a+b);}main(){int x=2,y=5,z=8,r;r=func(func(x,y),z);printf("%dn",r);}该程序的输出结果是()A12B13C14D15

6、下列程序的输出结果是int b=2;int func(int *a){ b+

下列程序的输出结果是int b=2;int func(int *a){ b+=*a; return(b);}main(){ int a=2, res=2; res += func(&a); printf("%d\n",res);} A.2 B.4A2 B4C6 D8