新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为在swap函数中,a b是x y的数据复制品,其变化与X y本身无关,如果要交换,需要传递x y的地址到子函数中,进行交换!
创新互联公司是一家专注于成都网站制作、成都网站建设与策划设计,黄平网站建设哪家好?创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:黄平等地区。黄平做网站价格咨询:13518219792
1 #include stdio.h
2 void swap(int *a ,int *b )
3 {
4
5 int temp;
6 temp=*a;
7 *a=*b;
8 *b=temp;
9 }
10 int main()
11 {
12 int x=3;
13 int y=4;
14 swap(x, y);
15 printf("%d%d",x,y);
16 }
你交换的只是swap函数内的局部变量n,m值,应该改成这样
#includestdio.h
void swap (int *n,int *m)
{
int temp;
temp=*n;
*n=*m;
*m=temp;
}
void main()
{
int a=10,b=20;
swap(a,b);
printf("a=%d,b=%d\n",a,b);
}
注意函数形参的传值和传地址的区别
C语言中是可以用函数互换两个值的。
方法如下:
#include"stdio.h"
int swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
main()
{
int x,y;
printf("请输入x与y的值,用空格隔开\n");
scanf("%d %d",x,y);
printf("x=%d,y=%d\n",x,y);
swap(x,y);
printf("交换后\nx=%d,y=%d\n",x,y);
}
因为在函数中的参数,并不是调用者的变量,而是临时申请的变量a和b存放main函数中变量a和b的值,并在函数中用来计算,在fun中给a和b赋值都是在操作这两个临时申请的变量,函数返回后,这两个变量被舍弃,函数调用也没有将这两个临时变量的值返回给main函数中调用使用的参数功能。
所以,在函数中要操作调用者申请的变量,需要给出它们的指针,函数中用指针来找到这些变量的位置和内容。