| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:09C语言真题---指针作为函数参数
只看楼主 加入收藏
taomei006
Rank: 1
来 自:安徽铜陵学院
等 级:新手上路
帖 子:52
专家分:0
注 册:2009-9-11
结帖率:50%
收藏
 问题点数:0 回复次数:4 
09C语言真题---指针作为函数参数
#include <stdio.h>
void fun(int *a)
{    a[0]=a[1];   }
main()
{int i,a[10]={10,9,8,7,6,5,4,3,2,1};
for(i=2;i>=0;i--)  fun(&a[i]);
for(i=0;i<10;i++)  printf("%d",a[i]);
printf("\n");
}
上机输出结果是:7777654321

对于数组而言,实参向形参传送的就是数组名,也就是数组的首地址,却从未见过传送某个元素的地址,那位大侠帮我解释一下。。。
搜索更多相关主题的帖子: 参数 函数 指针 
2009-09-15 15:36
vcx
Rank: 2
等 级:论坛游民
帖 子:61
专家分:81
注 册:2009-9-15
收藏
得分:0 
根据你里面的第六行,进行函数调用,&a[i]传到形参*a里
2009-09-15 15:48
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:0 
是你对数组下标的定义不明确。
传递的既然是数组元素的地址 那么调用fun(&a[i])后 形参a就指向a[i]

数组下标a[i]是这样操作的 首先取a指向的地址 再取i的偏移值  两者相加得到a[i]的地址。
for(i=2;i>=0;i--)  fun(&a[i]); 这个句子分析为
i=2  fun(&a[2]) 此时形参a代表&a[2] 那么a[0]就是取a的地址(即&a[2])+0 其指向的地址的内容
那么就是实参数组a[2] 同理被调函数中的a[1]即实参中的a[3] 所以实参数组中第3个元素被改写为7;
当i=1时 同理得到 实参数组中的第2个元素被改写为第3个元素的内容 即 7
当i=0时。。。。。。。。。。。。。。。。。。。。。。。。。。。。即 7
那么输出数组 就是7777654321
2009-09-15 15:51
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:0 
有时候觉得 考试卷子里的题目有时候真的还挺BT。。。
估计有些高手都不知道答案是啥。。 考的又细致又BT。
但说白了 很考C的最基本功
2009-09-15 16:15
taomei006
Rank: 1
来 自:安徽铜陵学院
等 级:新手上路
帖 子:52
专家分:0
注 册:2009-9-11
收藏
得分:0 
致atom_09你的意思是
i=2时,把&a[2]传递给指针变量a,于是相当于产生了一个新数组(该数组的首元素为a[2],于是a[2]代表a[0],a[3]代表a[1])
请问我可以这样理解吗???
2009-09-15 18:47
快速回复:09C语言真题---指针作为函数参数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016431 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved