C语言 按地址传递和按数值传递

在函数调用的时候,我们都会碰到传递这个概念,但是有两种情况的传递,一种是数值传递,一种是地址传递,我们在选择的时候又该如何选择呢。这个要根据我们具体的目的来选择。

  • 数值传递
#include<stdio.h> 
int funtion(int y);
int main()
{
    int x = 1;
    funtion(x);
    printf("x的值没有发生变化:x = %d\n",x);//修改y的值后,x的值没有发生变化 
    return 0;
}

int funtion(int y)
{
    printf("y = %d\n",y);//x传递给y的值 
	y = 2;
    printf("改y的值后:y = %d\n",y);//修改y的值后 
}

如果我们需要计算或处理值,那么使用数值传递形式的函数调用,因为我们不需要改变主调函数变量的值,即我们不修改主调函数中x的值,可以直接选择数值传递

  • 地址传递
#include<stdio.h> 
int funtion(int* y);
int main()
{
    int x = 1;
    funtion(&x);
    printf("x = %d\n",x);
    return 0;
}

int funtion(int* y)
{
    *y = 2;
    return *y;
}

如果我们需要在被调函数中改变主调函数的变量,即修改x的值,则使用地址传递形式的函数调用

可以看到x的值被修改成2了,所以以后我们可以根据自己的需求,是否需要修改主调函数变量的值来选择按值传递还是按地址传递

 

这是C primer plus 第六版本 pdf ,大家有需要的可以去下载,https://xbp.pub/i/ZZ0fb1cc4foMq 还有perl,python,数据分析等一些技能书籍,大家有需要的可以去看看  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值