首页
学习
活动
专区
圈层
工具
发布

【C语言函数调用详解】——传值调用&传址调用

num1,num2的目的,我们看看结果是什么样的: 因此,传值调用,要想在函数内部交换两个变量的值,是不可行的。...这里就需要传址调用。 二.传址调用 那什么是传址调用呢?这里的“址”指的是地址。 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。...这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。...那现在我们用传址调用的方法对上面的函数重新进行实现: #include //正确的版本 void Swap2(int* px, int* py) { int tmp = 0; tmp...以上就是对函数调用的两种方式,传值调用和传址调用的介绍,欢迎大家指正,我们一起进步!!!

2.1K10

【C语言】传值调用与传址调用详解

前言 在C语言的学习过程中,理解函数的参数传递方式是非常重要的概念。C语言支持两种常见的参数传递方式:传值调用(Call by Value)和传址调用(Call by Address)。...在C语言中,函数在被调用时会接收参数。参数传递是指在函数调用时,函数的输入数据(参数)如何从调用者传递到被调用的函数。传值调用和传址调用是两种常见的传递方式,它们的差别决定了函数能否改变传入参数的值。...C语言 传值调用 1. 什么是传值调用? 传值调用是C语言中最常见的函数参数传递方式。在这种方式下,函数接收到的是参数的副本。换句话说,函数在调用时并不会修改原始参数,而是对参数的副本进行操作。...与传值调用不同,传址调用会将变量的地址传递给函数,这样函数就能够直接修改原始变量的值。在传址调用中,传递的是变量的指针,函数通过指针访问并修改原始变量的内容。 2....传址调用:当需要修改传入的参数,或者当参数较大(如数组、结构体等)时,传址调用更为高效。 小结 通过上述分析,我们深入探讨了C语言中两种常见的参数传递方式:传值调用和传址调用。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C语言】指针进阶之传值调用与传址调用

    ✔在编程语言如C中,传值调用和传址调用是用来传递参数给函数的方法。它们的主要区别在于参数传递的方式: ☞传值调用:这是最基本的参数传递方式,它涉及将参数的值复制一份传递给函数。...在函数内部,对这些复制的值进行的任何修改都不会影响到原参数的值,因为函数只是在自己的局部范围内操作这个副本。 ☞传址调用:这种方式则是将参数的地址传递给函数。...,这种函数调⽤⽅式叫:传址调⽤。...✔传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量; 4.结论 所以未来函数中只是需要主调函数中的变量值来实现计算,就可以采⽤传值调⽤。...如果函数内部要修改主调函数中的变量的值,就需要传址调⽤。

    61210

    【C语言】传值调用与传址调用:深度解析与实现

    前言 在学习 C语言 时,“传值调用” 和 “传址调用” 是两个至关重要的概念,涉及到函数与变量的交互机制,以及如何有效管理内存资源。...同时,我们将探讨指针的作用及其在 C语言 中的重要性,从多个角度帮助您系统性地理解这些关键概念。 C语言 什么是传值调用和传址调用? 1....通过这种方式,函数可以直接访问和修改原始变量的值。在 C语言中,传址调用可以通过指针来实现。...虽然Java中没有像C语言的指针,但通过引用对象可以达到类似传址调用的效果。这在需要修改对象内部状态的场景中尤为有效。...小结 C语言中的传值调用和传址调用是函数参数传递的两种基本方式,各有其优缺点和适用场景。传值调用通过传递参数的副本确保数据的安全性和独立性,而传址调用通过传递指针提高了数据操作的效率和灵活性。

    92510

    5分钟搞懂C语言的传值和传址

    /* * @author: 冲哥 * @date: 2022/4/14 * @description:交换x,y的值 * @公众号:C语言中文社区 */ #include "stdio.h"...,他是这样写的: /* * @author: 冲哥 * @date: 2022/4/14 * @description:交换x,y的值 * @公众号:C语言中文社区 */ #include ".../* * @author: 冲哥 * @date: 2022/4/14 * @description:交换x,y的值 * @公众号:C语言中文社区 */ #include "stdio.h"...[640 (4).png] 图中可以清楚地发现,在函数的调用过程中实现的是参数x和y的传址,即把x和y存储单元的地址传递给px和py,swap()函数中的形参不再拥有自己的存储空间,它们分别指向x和y的存储单元...这也是在采用传址的时候修改形参也会影响实参的原因。 通过以上实例是不是就能很容易理解C语言的传值和传址,有什么问题欢迎留言。

    85081

    5分钟搞懂C语言的传值和传址

    为了方便说明,我们用图来展示参数是如何进行传值的。...从图中清楚地发现,在函数的调用过程中实现的是main()函数里参数x和y的传值,即把main()函数里参数x和y的值传递给swap函数里x和y,swap()函数中的x和y拥有自己的存储空间,所以接下来在...swap()函数中进行的交换操作仅仅是对swap函数内部x和y进行的,不会影响到main()函数中x和y的值。...图中可以清楚地发现,在函数的调用过程中实现的是参数x和y的传址,即把x和y存储单元的地址传递给px和py,swap()函数中的形参不再拥有自己的存储空间,它们分别指向x和y的存储单元,所以接下来在swap...这也是在采用传址的时候修改形参也会影响实参的原因。 通过以上实例是不是就能很容易理解C语言的传值和传址。

    66710

    传址与传值

    这里将讲述传址与传值的区别,先见下图。 这是传值的过程,我们明明把a,b作为实参传过去了。可以看到,交换后的a,b并没有达到我们的预期。为什么会这样呢?...其实是因为,传值的时候,形参是临时创建的,在执行完swap函数后,他们又自动销毁了,从而导致a,b的值并没有交换。如果想要改变实参的值,我们就需要进行传址,而不是传值。...此时我们的实参就改为&a和&b,注意swap函数的形参类型是int*,这样就能交换a与b的值啦。...总结:传值:形参是实参的一份拷贝,函数运行起来后,实参是实参,形参和实参没有任何关联,改变形参时,不会对实参造成影响。            ...传址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此,对形参解引用后的内容进行修改,改变的就是实参。

    1.3K10

    传值和传址

    往期文章 【JS ES6】const var let 一文搞懂声明关键字所有的知识点 目录 传值 什么是传值  例  传址 什么是传址 例  ---- 传值 什么是传值 let a = 1; let...b = a; console.log(a, b); //1 1 传值是获取一份儿相同的值,并自身重新开一份儿属于自己的内存地址,两个变量是互相独立的并不会互相影响。  ...例  let a = 1; let b = a; b = 2; console.log(a); console.log(b); 修改了b的值,a的值不会受到影响,这就是传值,两者是独立的存在,引用内存比较小的引用赋值一般都是传值...传址 什么是传址 let a = { name: "xiaoxie", }; let b = a; console.log(a, b); 传值是获取一份儿相同的值,不会自身重新开一份儿属于自己的内存地址...let b = a; b.name = "xiaoliu" console.log(a, b);  修改了b.name就是修改了a.name的值,两者使用同一个内存地址,一般引用占用内存较大的变量时,会传址

    3.8K20

    C语言函数传参:指针的指针

    这是道哥的第013篇原创 前言 今天同事问了一个问题:在函数参数中传递指针的指针,很常用的一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...size个字节的空间,然后返回给main函数中的pData指针。...到这里就已经看到程序崩溃的原因了:虽然给指针p赋值了,但是实参pData中的内容一直为空,因此从do_malloc函数返回之后,pData仍然是一个空指针,所以就崩溃了。...代码:版本2 代码的本意是在do_malloc函数中申请堆空间,然后把这块空间的首地址赋值给pData。...在do_malloc函数中,调用系统函数malloc成功之后返回所分配空间的首地址,关键是要把这个首地址送给pData指针,也就是说要让pData指针变量中的值等于这个堆空间的首地址。

    2.7K20

    C语言-函数的定义、声明、传参

    前言 C语言里函数是非常重要的知识点,一个完整的C语言程序就是由主函数和各个子函数组成的,主函数调用子函数完成各个逻辑功能。 2. 函数在C语言里是什么概念?...函数相当于打包代码的过程,程序代码里如果有很多重复代码,可以将重复代码写成一个函数,进行调用。 C语言程序里除了main函数(主)之外的函数都叫子函数,都属于自定义函数。 3. 函数如何定义?...} int func3(int a,int b,int c,.....) { return 12; } void func4(char *p) { } 4.自定义的函数如何调用和声明?...b) { int c; c=a+b; return c; //返回结果,并终止函数执行 } 6. return 语句作用 return 本身功能终止函数执行,顺带返回一个值给调用者。...if(a>b){int c;…. } 生命周期: 全局变量生命周期和main函数共存。

    1.9K10

    C语言总结_数组与函数传参练习题

    字符串标准处理函数介绍(string.h)、指针和数组当做函数形参,指针定义、函数返回指针、void类型定义指针、类型强制转换、常量声明、extern外边引用声明关键字。 1....总结字符串相关的处理函数 string.h里常用的字符串处理相关函数。...数组的名称: 就是首地址 在C语言里任何类型的指针(地址)是4个字节 2....函数形参和返回值: 都是地址 (1)数组类型可以当做函数形参。void func(char buff[]){} (2)数组类型不能当做函数返回值类型。...char buff[] func(void){} 错误的 函数如果要返回地址类型: 必须使用指针类型。 函数形参如果要传入地址类型: 可以使用指针类型或者数组类型。

    1.1K20

    C语言指针深入详解(二):const修饰指针、野指针、assert断言、指针的使用和传址调用

    个人主页:艾莉丝努力练剑 专栏传送门:《C语言》 学习方向:C/C++方向 ⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平 前言:前面几篇文章介绍了c语言的一些知识,包括循环、数组、函数...四、指针的使用和传址调用 (一)strlen的模拟实现 库函数strlen的功能是求字符串长度,统计的是字符串中 \0 之前的字符的个数。...输出结果: 我们从这里可以看到实现成Swap2的方式,顺利完成了任务,这里调用Swap2函数的时候是将变量的地址传递给了函数,这种函数调用方式叫:传址调用。...传址调用,可以让函数和主调函数之间建立真正的联系,在函数内部可以修改主调函数中的变量;所以未来函数中只是需要主调函数中的变量值来实现计算,就可以采用传值调用。...如果函数内部要修改主调函数中的变量的值,就需要传址调用。

    20310

    【C++】函数返回方式详解:传值、传引用与传地址

    个人主页:@草莓熊Lotso 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受...前言:在 C++ 中,函数返回值的传递方式直接影响程序的性能、安全性和可读性。传值返回、传引用返回和传地址返回是三种主要的返回机制,它们在内存管理和使用场景上有着显著差异。...一.传值返回 传值返回是最常见的返回方式,函数会创建返回对象的一个副本,将这个副本传递给调用者。调用者接收到的是独立于函数内部对象的副本。...语言兼容的接口 四.三种返回方式的对比分析 特性 传值返回 传引用返回 传地址返回 返回内容 对象的副本 对象的引用(别名) 指向对象的指针 内存开销 有拷贝开销 无拷贝开销 无拷贝开销(仅返回地址)...支持空值表示,但增加了内存管理负担 往期回顾: 【C++】--指针与引用深入解析和对比 【C++】--函数参数传递:传值与传引用的深度解析 结语:理解这三种返回方式的本质差异,根据具体场景选择合适的方式

    17810
    领券