希望有人回答一下这两个题,说一下选项错误的原因:
1.已知函数原型 int f(int)和 int g(int)。下列语句中,正确调用函数的语句是
A. int f(3);
B. f( int g(3) );
C. int g( f(3) );
D. p=f( g(3) +1 );
2..若程序中有如下函数定义:
void fun(int p[10], int n)
{
int j;
for(j=0; j<n; j++)
p[j]=0;
}且主函数中有声明:int a, b[10];,则主函数中对 fun 函数的调用正确的是( )
A.a=f(b,1);
B.f(b[10],1);
C.f(a,1);
D.f(&a,1)
选D B ?
应该选D、D
第一题int f(3)
、f( int g(3) )
、int g( f(3) )
都是错误的写法,对应正确的写法是(int) f(3)
、f( (int) g(3) )
、(int) g( f(3) )
第二题只能选D,因为f
函数需要第一个参数实际为整型指针类型参数,且没有返回值,所以a=f(b,1)
是没有返回值错误赋值给整型,会报类型错,f(b[10],1)
这里实参b[10]
是一个整型,而不是整型指针,也会报类型错误,f(a,1)
也是这样,a
是整型用作实参,而不是整型指针,这里只有f(&a,1)
是一个整型指针为第一个实参,第二个实参为整型。