全国计算机二级c语言2010年3月笔试卷选择题 第32题求详细解析? 选择题 第32题

[复制链接]
查看11 | 回复1 | 2011-3-5 06:50:02 | 显示全部楼层 |阅读模式
选择题 第32题

#includestdio.h
#define N 8
void fun(int *x,int i)
{*x=*(x i);}
main()
{int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0;iN/2;i)
{printf(\"%d\",a);}
printf(\"\\n\");
}

运行结果是3 2 3 4 为什么?
回复

使用道具 举报

千问 | 2011-3-5 06:50:02 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">fun(int *x,int i)函数中功能理解明白就行了,其功能应该是把x i指针所指的变量值赋给x指针所指的变量。(x是指针,表示地址),而数组中,数组名表示数组第一个值的地址,跟指针一样性质,所以fun(a,2)中,a表示的是数组a[N]里的a[0]值的地址,a 2即代表a[2](值为3)的地址,带到fun中即a=a 2,得到a[0]=a[2]=3。这里只是把a[2]的值赋给了a[0],所以a[0]的值变成了3,数组其他的不变,即数组a[N]={3,2,3,4,5,6,7,8}。
for循环中是显示数组a的值(i4)即显示a[0] a[1] a[2] a[3]对照数组即得到3 2 3 4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行