调用swap函数,将数组名array作为实参,传入给swap函数C语言输入两个值,保存到数组中,将。
答案:2 悬赏:40 手机版
解决时间 2021-01-29 00:01
- 提问者网友:川水往事
- 2021-01-28 11:05
输入两个值,保存到数组中,将数组传递到swap函数中,实现两值的交换,最后输出交换后的两值。
样例输入
3 5
样例输出
5 3
提示
带填充标签的C/C++原程序
#include
@#1 //声明swap函数,其参数为数组
int main()
{
int array[2];
scanf("%d %d",&array[0],&array[1]);
@#2 //调用swap函数,将数组名array作为实参,传入给swap函数,实际传入的是数组的首地址
printf("%d %d\n", array[0], array[1]);
}
void swap(int a[])//array传入后,数组a和数组array的首地址相同,可以看成是同一个数组
{ int temp;
//交换a[0]与a[1]的值,起到了交换array[0]和array[1]的效果
@#3
@#4
@#5
//虽说数组array传入后,数组array和数组a是同一个数组,但在swap函数内部,不能使用array,因为swap函数内部,无法识别array这个名称。
}
最佳答案
- 五星知识达人网友:野味小生
- 2021-01-28 11:46
#1 void swap(int a[]);
#2 swap(array);
#3 temp=a[0];
#4 a[0] = a[1];
#5 a[1] = temp;
全部回答
- 1楼网友:七十二街
- 2021-01-28 12:12
c语言中形参与实参的关系是:形参是实参的值副本。无论参数的类型是什么,传递到子函数中的形参只是实参的值。所以,在改变形参变量自身的值时,是与实参无关的。换句话说,形参的改变不会影响到实参。
但,如果参数类型是指针类型,则可以通过对指针变量所指向的地址中的数据进行修改,达到改变实参地址中的数据目的。
因此,使用swap函数进行数据交换时,必须保证两点:
1. 参数必须是指针类型,指向待交换的数据
2. 交换时,必须交换地址中的数据,而不是交换地址本身。
参考代码:
//错误的交换代码1
void swap1( int a, int b ) //参数不是待交换数据的指针
{
int t=a;
a=b;
b=t;
}
//错误的交换代码2
void swap2( int *a, int *b )
{
int *t=a;//交换形参变量本身
a=b;
b=t;
}
//正确的交换代码
void swap( int *a, int *b )
{
int t=*a;//交换形参变量地址中的数据,指针变量不变
*a=*b;
*b=t;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯