数组元素做函数参数——值传递

#include<stdio.h>voidswap2(intx,inty){intz;z=x;x=y;y=z;}main(){inta[2]={1,2};swap2(a[... #include <stdio.h>
void swap2(int x,int y)
{ int z;
z=x;
x=y;
y=z;
}
main()
{ int a[2]={1,2};
swap2(a[0],a[1]);
printf("函数调用后,数组元素的值为:\n");

printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);
}
为什么最后值没有交换呢
展开
 我来答
种烧饼的怪叔叔
2013-12-24 · TA获得超过2215个赞
知道小有建树答主
回答量:824
采纳率:65%
帮助的人:465万
展开全部
首先,你要把定义函数看成是申请空间,你在定义void swap2(int x,int y)时候申请了两个int空间,传递的意思就是把原来主函数中的内容传递给所定义的空间,例如swap2(a[0],a[1]);这个意思就是,把a[0]和a[1]这两个地址的内容(1和2)分别让x,y的空间储存。实际上是值的传递,这就好比x=a[0],y=a[1],那么即使再改变x,y的值也不会影响原来对其赋值的那个数的大小
zcl19901011
2013-12-24 · TA获得超过689个赞
知道小有建树答主
回答量:389
采纳率:100%
帮助的人:320万
展开全部
#include <stdio.h>
void swap2(int *x,int* y)
{ int z;
z=*x;
*x=*y;
*y=z;
}
main()
{ int a[2]={1,2};
swap2(&a[0],&a[1]);
printf("函数调用后,数组元素的值为:\n");

printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);
}

只有用指针才能交换过去
追问
这个*是干嘛用的喔
追答
int*是指针类型  指向地址单元,即指向a[0],a[1]的地址,然后交换地址单元保存的值,才能实现真正意义的交换
否则,你用局部变量x,y接受传递的值,然后交换x,y,但是函数结束后,x,y释放,a[0],a[1]的值还是原来的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jhz931920
2015-12-18 · TA获得超过1万个赞
知道大有可为答主
回答量:3705
采纳率:60%
帮助的人:647万
展开全部
  1. 实参与形参类型一致

  2. 实参用相应的数组元素即可,如(a(1),a(2),......)

  3. 实参与形参个数相同

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式