c语言 值传递与引用传递

值传递和引用传递

先来看两个实列,观察值传递和引用传递的区别。
zhi.c 值传递例子

#include <stdio.h>
void swap(int a, int b);
void main(void) {
        int a=100;
        int b=200;
        printf("a=%d\n", a);
        printf("b=%d\n", b);
        swap(a, b);
        printf("a=%d\n", a);
        printf("b=%d\n", b);
}
void swap (int a, int b) {
        int temp;
        temp=a;
        a=b;
        b=temp;
}

编译 gcc zhi.c -o zhi,./zhi 执行结果:

wangjing@ubuntu:~/script$ ./zhi
a=100
b=200
a=100
b=200

dizhi.c 引用传递例子

#include <stdio.h>
void swap(int *a, int *b);
void main(void) {
        int a=100;
        int b=200;
        printf("a=%d\n", a);
        printf("b=%d\n", b);
        swap(&a, &b);
        printf("a=%d\n", a);
        printf("b=%d\n", b);
}
void swap (int *a, int *b) {
        int temp;
        temp = *a;
        *a=*b;
        *b=temp;
}

编译 gcc dizhi.c -o dizhi,./dizhi 执行结果:

wangjing@ubuntu:~/script$ ./dizhi
a=100
b=200
a=200
b=100

通过上面两个实例,引有传递方式形参是指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行操作。传引用与传值调用不同,引用调用在函数内部改变了 a 和 b 的值,实际上也改变了函数外 a 和 b 的值。传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。
(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值