| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 660 人关注过本帖
标题:一个关于数组的问题
只看楼主 加入收藏
liulunzheng9
Rank: 1
等 级:新手上路
帖 子:15
专家分:1
注 册:2012-10-21
收藏
 问题点数:0 回复次数:15 
一个关于数组的问题
程序如下
#include<stdio.h>
void swap1(int c[])
{
    int t;
    t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{
    int t;
    t=c0;c0=c1;c1=t;
}
main()
{
    int a[2]={3,5},b[2]={3,5};
    swap1(a);
     swap2(b[0],b[1]);
     printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
 
问题: b[2]数组是整形 数组元素也是整形 为何程序不执行swap2(int c0,int c1) 请各位大侠帮帮忙
搜索更多相关主题的帖子: 元素 
2012-12-28 22:10
Joellala
Rank: 1
来 自:gg
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-28
收藏
得分:0 
TT
2012-12-28 22:14
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
要不你分别把数组b的两个元素分别赋值给两个变量,然后代入swap2试试,看行不行。

我了个去的编程!
2012-12-28 22:26
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
实际上他是执行了的!
试试
void swap2(int c0,int c1)
 {
     int t;
     t=c0;c0=c1;c1=t;
     prentf("%d   %d",c0,c1);//输出时是交换了的!不过此处的c0和c1不是主函数的c0.c1(虽然值相同),这里的c0c1是系统临时分配的内存,当调用结束后c0c1的内存就会
                             //释放,c1c0的值也就不存在了!又因为没有返回值,所以主函数自然不会变了!

 }

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-12-28 22:28
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
顶楼上

我了个去的编程!
2012-12-28 22:30
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
唉,我其实是菜鸟!一学期快结束了感觉没学到什么东西!得向猫哥学习,开始啃书了!

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-12-28 22:33
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
哎呀,不是变量的是,楼主同学,你冤枉swap2这个函数了,他忠实的执行了你交代的任务,可是你没有给swap2函数修改main函数里数组元素的权利,这样的传参叫值传递,相当于传递的是实参的副本,当然对实参没影响啊,想要改变实参要地址传递的swap2(&b[0],&b[1]),当然,形参相应得要用指针喽。
(以上言语经过反复编译测试,相信不很在犯错误了

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-28 22:33
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
额外兄弟,咋又扯上我了呢???我是良民啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-28 22:34
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
回复 8楼 yaobao
没啥,就是向猫哥看齐!这学期就跟着老师的进度浑浑噩噩的学,感觉很差啊!没学到什么东西啊!得向猫哥学习,啃书,自学!?

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-12-28 22:39
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:0 
回复 7楼 yaobao
猫哥的意思是main函数中,swap2函数调用时,先把两个元素复制了一遍,被改动的只是复制出的值,所以对原来的两个元素没有影响,而应该用指针,才能改变原先的元素喽?

我了个去的编程!
2012-12-28 22:42
快速回复:一个关于数组的问题
数据加载中...
 
   



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

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