C语言中传值问题

网上看了一些,自己归纳了一下传值大概分为已下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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值