函数参数的传值和传指针有什么区别?

本文探讨了C语言中函数参数传递的区别,包括传值和传指针。传值会创建参数副本,无法改变原始变量值,而传指针则允许修改原始变量。通过实例和图解说明了为何传指针可以实现值交换,并解释了为何直接传递指针副本不能改变外部指针的值,需要传递指针的地址。最后,总结了传值与传指针的特点。
摘要由CSDN通过智能技术生成

来源:公众号【编程珠玑】

作者:守望先生

 

 

前言

我们可能听过C语言中的传值和传指针,在其他语言中,也有传引用一说,那么他们到底有什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。

传值

我们在初学C语言的时候就被老师教过,下面的方式是无法交换a和b的值的:

#include<stdio.h>
void swap(int a,int b)
{
    int temp = a;
    a = b;
    b = temp;
    printf("swap a = %d,b = %d\n",a,b);
}
int main(void)
{
    int a = 10;
    int b = 20;
    printf("before swap:a = %d,b = %d\n",a,b);
    swap(a,b);
    printf("after  swap:a = %d,b = %d\n",a,b);
    return 0;
}

运行结果如下:

before swap:a = 10,b = 20                                                                                                                                                                   internal swap a = 20,b = 10                                                                                                                                                                 after  swap:a = 10,b = 20 20                                                                                                                                                                   
internal swap a = 20,b = 10                                          
  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值