C语言中传值问题

来源:互联网 发布:电磁仿真软件 feko 编辑:程序博客网 时间:2024/06/01 09:23

网上看了一些,自己归纳了一下传值大概分为已下3种:1:值传递 2:地址传递 3:引用传递1:值传递

1:值传递

#include <stdio.h>#include <stdlib.h>void exchange(int x,int y){int temp;    temp=x;    x=y;    y=temp;    printf("%d %d\n",x,y);}int main(){int a,b;scanf("%d %d",&a,&b);    exchange(a,b);\\exchange(a,b)相当于只是把a,b的值传递给了x,y所以交换了x,y的值,但是并没有将a,b的值转化,等价于x=a,y=b中,交换xy值不影响ab量    printf("%d %d\n",a,b);system("pause");return 0;}

运行程序观察输出可以看出xy交换成功但是ab值并未发生变化

2:地址传递

#include <stdio.h>#include <stdlib.h>void exchange(int *px,int *py){int temp=*px;    *px=*py;    *py=temp;    printf("%d %d\n",*px,*py);}int main(){int a=1,b=2;    exchange(&a,&b);// 注意此时是把a的地址给px,b地址传递给py,px=&a,然后*px就可以对a,b进行修改    printf("%d %d",a,b);system("pause");return 0;

运行程序发现xy,ab都交换成功都分别为1 2

3:引用传递

#include <stdio.h>#include <stdlib.h>void exchange(int &px,int &py){int temp=px;    px=py;    py=temp;    printf("%d %d\n",px,py);}int main(){int a=1,b=2;    exchange(a,b);//这里ab将自己的地址传递给了px,py,然后pxpy就可以对ab进行操作,输出结果2 1,2 1    printf("%d %d",a,b);system("pause");return 0;}



0 0
原创粉丝点击