帮小弟解决一道2级C语言试题

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:37:25
void f(int *q)

{int i=0;

for( ; i<5;i++)(*q)++;

}

main()

{int a[5]={1,2,3,4,5},i;

f(a);

for(i=0;i<5;i++)printf(“%d,”,a[i]);

}

帮解决一下啊~~急~~不知道从那下手啊~~希望大哥门讲的详细点

1.
由只有void f(int *q) 和main() 得,这是一个子函数和一个主函数,之间是调用关系
2.
看void f(int *q)函数中关键语句是for(;i<5;i++)(*q)++;
其中q已定义为整型地址量(int *q),q前面加上*表示q这个地址所指向的内容,所以(*q)++的意思就是q所指向的数据自加1
由此很易得知,语句for(;i<5;i++)(*q)++;的含义是q所指向的数据自加1,且执行五次,即自加五
3.
看主函数
int a[5]={1,2,3,4,5};是将a赋值,很易明白
f(a);是调用刚才分析的那个自加五的子函数。
其中a表示数组地址,代入子函数中则以q表示.而a所指向的数据则是数组的第一个数,所以实现的功能是数组的第一个数自加五
最后一句是for(i=0;i<5;i++)printf(“%d,”,a[i]); 显示输出数组
最后结果为:
6,2,3,4,5