
数组元素做函数参数——值传递
#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]);
}
为什么最后值没有交换呢 展开
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]);
}
为什么最后值没有交换呢 展开
展开全部
首先,你要把定义函数看成是申请空间,你在定义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的值也不会影响原来对其赋值的那个数的大小
展开全部
#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]);
}
只有用指针才能交换过去
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]的值还是原来的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实参与形参类型一致
实参用相应的数组元素即可,如(a(1),a(2),......)
实参与形参个数相同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询