刺破数据结构-数据结构学习总结(第二章)p16部分解读

第02周07--类C语言有关操作补充2_哔哩哔哩_bilibili

对传值方式的解读:

每一个函数相当与一个独立的房间,传入的参数其实相当于放入了一个新的独立的变量当中。

所以说传入数值的时候不会改变传入的ab,用大白话讲就是说,传入就是把自己复制给相应位置的形参当中!也就是说在函数形式参数其实是你传入参数的一个复制品而不是正主!!!

传地址其实同理,只不过传入的是地址,当用*去除地址的值的时候我们所操作的是真真实实的a与b而不再是a与b的复制品了!(传地址,改地址所指的内容)

这样下来这种传地址方式大家也应该比较好理解。

它传递并改变的是什么?传的是地址(就是把地址复制给相应的形式参数ps:复制件跟原件除了数值相同已经毫无关系了),但变的也是地址。(传地址改地址)等于啥也没传。

#include <stdio.h>
#include <stdlib.h>


void swap(float *a, float *b)
{
    float *t;
    t = a;
    a = b;
    b = t;
}
int main(){
    float a,b,*p1,*p2;
    a = 1.2;
    b = 3.6;
    p1 = &a;
    p2 = &b;
    printf("a=%f,b=%f\n",a,b);
    printf("p1=%d,p2=%d\n",p1,p2);
    swap(p1,p2);
    printf("p1=%d,p2=%d\n",p1,p2);
    printf("*p1=%f,*p2=%f\n",*p1,*p2);
    printf("a=%f,b=%f",a,b);

}

为了方便大家理解可以运行一下这个程序。

可以发现大家都是一样的。

下面引用参数就是相当于在不同房间里不创造复制品,请原主过来的意思。所以它能直接实现值的修改。ps:除了引用方式其他的方式全都创建了复制品。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值