调用swap函数,交换主函数中变量x和y中的数据。
调用swap函数,交换主函数中变量x和y中的数据。#include<stdio.h>
void swap(int *,int *);
main()
{
int x=30,y=20;
printf("(1)x=%dy=%d\n",x,y);
swap(&x,&y);
printf("(4)x=%dy=%d\n",x,y);
}
void swap(int *a,int *b)
{int t;
printf("(2)a=%db=%d\n",*a,*b);
t=*a;*a=*b;*b=t;
printf("(3)a=%db=%d\n",*a,*b);
}
运程序行结果如下:
(1)x=30y=20
(2)a=30b=20
(3)a=20b=30
(4)x=20y=30
为什么(4)的值会改变
通过传送地址的方式在被用函数中直接改变函数中的变量的值,我理解不了这句话,{:5_94:} 本帖最后由 xiaosi4081 于 2020-8-5 14:58 编辑
通过传送地址的方式在被用函数中直接改变函数中的变量的值
传过去swap函数中的参数是两个指针,指针指向的那个变量的内容,在swap中被重新赋值 本帖最后由 zltzlt 于 2020-8-5 15:02 编辑
因为传送的是指向原变量的指针,在函数中修改指针指向的变量的值,而传值就相当于复制一份变量的值再传进函数 本帖最后由 sunrise085 于 2020-8-5 15:09 编辑
给你看一个我之前写的图
上半部分是值传递,
下半部分是址传递,也就是你的程序中的这种方式。
假如你是按值传递参数的话,传入的将会是一个副本,你改副本的话,不会改本体。
但你要是按地址传递参数的话,传入的将会是一个地址,它不是副本,就是本体,
所以可以改本体。 swap() 接收到的是 2 个装有货物的盒子,它的工作就是将两个盒子里的货物进行对换。所以,你会看到,调用 swap() 之后,两个变量(x , y)的值发生了交换。
页:
[1]