C/C++中的参数传递

本文介绍了C/C++中三种参数传递方式:值传递、指针传递和引用传递。通过举例说明,详细解析了每种方式的工作原理和内存变化,强调了指针传递和引用传递在实现变量交换时的异同,以及它们对性能的影响。值传递只是形参的副本发生变化,而指针和引用传递则能直接影响实参。引用传递相比指针更易理解和使用,且空间性能更高。
摘要由CSDN通过智能技术生成

C语言中的函数参数传递方式有两种:值传递和指针传递,C++中新增了一种函数参数传递的方式:引用传递。参数传递这个问题看似简单,如果不深入了解其中的原理,往往会变成为我们代码中经常出现而又容易忽视的错误。下面我就以我们非常熟悉的一个交换函数为例来详细说一下各种参数传递方式的联系与区别。
1.传值

//以传值方式进行参数传递
void swap(int a,int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}
int main(void)
{
    int m = 10;
    int n = 20;
    swap(m, n);
    printf("m=%d\n", m);
    printf("n=%d\n", n);
    return 0;
}

代码的执行过程如下:
1.程序进入到主函数中,看到两个声明以及初始化语句

int m = 10;
int n = 20;

会先给m和n这两个变量在内存分配两个空闲的空间(2*sizeof( int )个字节,不一定连续存储),如下图所示:

这里写图片描述

2.程序执行到语句:

swap(m, n); 

便会调用函数swap(int a, int b),这时又会为变量a和变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值