永发信息网

C语言高手请看下面。。

答案:5  悬赏:20  手机版
解决时间 2021-02-10 21:00
#include
void exch(int *t)
{t[0]=t[5];
}
main()
{int x[10]={1,2,3,4,5,6,7,8,9,10};
int i=0;
while(i<=4)
{
exch(&x[i]);i++;//这里传送第i个元素的地址值是什么意思啊,有点不懂.
}
for(i=0;i<5;i++)
printf("%d,",x[i]);
printf("\n");
}
开始的时候数组是这样排列的1 2 3 4 5 6 7 8 9 10,自己认为当i=0执行过后数组元素变成这样的:6 2 3 4 5 6 7 8 9 10,当i=1,2,3,4执行过后数组元素变成这样的:6 2 3 4 5 6 7 8 9 10。自己认为最后运行结果是:6 2 3 4 5.可是程序运行结果为什么等于6 7 8 9 10。有点蒙。如果把这句exch(&x[i]);改成exch(x);的话程序运行结果就是才是6 2 3 4 5.这中间我哪里理解错了。忘高手好好指导指导,这个没搞懂饭都吃不下去,在此大谢了,感激不尽。
最佳答案
你的问题是这样的
1、写成exch(&x[i]),这样写是将x[i]这个元素的地址传递给函数,例如当i=2,那么函数所做的交换为x[2]=x[7],你可以理解为函数收到了一个以x[i]开始的数组,并将这个数组的第一个元素和第六个元素进行交换。
2、写成exch(x),实际上等价于exch(&x[0]),也就是函数要做的始终是将原数组的第一个元素和第六个元素进行交换,如果交换次数为奇数次,那么就会得到你说的结果,为偶数次,则数组不发生变化
关于中间传递地址值的问题,这个是指针传值的基础知识,如果函数的参数为指针,则在传值的时候需要对相应的参数赋予变量地址,这样指针才能定位到具体的内存单元,从而读取你想传递的数据。一个数组,如果仅仅给出数组名,那么就是给出了该数组的第一个元素的地址。而由于数组是连续存储的,所以如果将一个数组中某个元素的地址传递给指针,那么指针所能访问的是该元素以及该元素之后所有元素所组成的数组
当然你这个函数是有一定的危险性的,因为数组可能会越界,而指针并不会受到数组长度的限制,因此可能会对内存中的其他数据造成影响,应避免使用指针
全部回答
简单的说么,你少了个双引号,仔细看,scanf那 max函数返回值类型也打错了。另外max函数定义后面不要加分号。
exch(&x[i])是传递具体的数组元素的地址给函数。 exch(x[i])是传递数组的首地址给函数。不管i是0还是4,到函数里就是会变为首地址。因为用数组进行传递时,会自动转换为首地址指针,跟下标没关系。
i=0执行后:*6 2 3 4 5 *6 7 8 9 10 i=1:6 *7 3 4 5 6 *7 8 9 10 i=2:6 7 *8 4 5 6 7 *8 9 10 i=3:6 7 8 *9 5 6 7 8 *9 10 i=4:6 7 8 9 *10 6 7 8 9 *10 前面加星号的是每次的t[0]和t[5]
你如果不进行while循环,exch那一句函数只执行一次,就是你说的那种结果了 6 2 3 4 5,但是由于有循环相当于 x[0] = x[5], x[1] = x[6]... 所以前面五个元素都进行了替换。 另外你exch函数写成这样你每次需要向里面传递一个指针,即数组的首地址。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
清谭洞地址在哪,我要去那里办事
沧州一路公交车终点站是哪啊,,看准 考证上
lafayettesalon地址在哪,我要去那里办事
如图示人类的起源和发展过程,请回答(1)A的
零·柒·靓·饮这个地址在什么地方,我要处理
角速度和线速度分别用英语说哦?
水上人间男士SPA养身部落地址在哪,我要去那
亚马孙河流域形成了高大密集的以乔木为主的雨
爱乐钢琴学校在哪里啊,我有事要去这个地方
奥韵美容美发地址在什么地方,想过去办事
百姓家具商场怎么去啊,有知道地址的么
天天酷跑裴小峰视频冰峰狼王 劲凉小帅 小丑熊
悦己优作造型地址在哪,我要去那里办事
p2p理财哪个最安全?
房县城关镇卫生院小西关门诊部地址在什么地方
推荐资讯
时代皇朝地址在什么地方,我要处理点事
我的妈妈和他的妈妈是堂姐妹,我的外公和他的
创意广告(文明街易视康视光中心旁)地址在什么
紫涵家私人影院地址在什么地方,我要处理点事
在淘宝上维权完成什么意思,能退款吗?高手解
新昌制药和新和成维生素a工艺谁更优
中国信合(红旗分社)(新开街与红旗街交叉口西
某班有学生45人,会下象棋的人数是会下围棋的
1秒跑140米,半分钟能跑多少米?
怎么查询案件进度
如图所示,弹簧的重力不计,弹簧的上端固定在
美尔姿干洗店地址好找么,我有些事要过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?