正确答案: A
题目:有以下程序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]);}程序的运行结果是
解析:本题考查数组作为函数形参与实参的使用。题目给出的程序分为两个部分,一个是函数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。
举一反三的答案和解析: