当前位置: 首页 > article >正文

【c语言】带你快速理解函数的传值和传址

创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 

主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ  

目录

前导知识:

传值和传址 


前导知识:

函数的数据传递原理

 

传值和传址 

例: 传入参数和传入参数变量空间

/*交换参数变量a b的值*/

void exchange(int a,int b)
{
    int t;
    t=a;a=b;b=t;
}

/*交换参数指针变量p、q所指向空间的值*/
void swap(int*p,int *q)
{
    int t;
    t=*p;*p=*q;*q=t;
}
int main(void)
{
    int a=3,b=4;
        printf("a=%d,b=%d\n",a,b);
    exchange(a,b);
        printf("a=%d,b=%d\n",a,b); //传值
    swap(&a,&b);
        printf("a=%d,b=%d\n",a,b); //传址
    return 0;
}

运行结果看出:exchange函数没有改变实参的值,而swap函数改变了main函数中a,b变量的值

exchange函数的ab值是由main中的ab复制过去的。因此exchange改变ab变量的值不会影响到main函数的ab变量值。 exchange函数只改变了自己参数变量ab的值

当传入数据的地址时,函数执行中就可以改变该地址空间内变量。

swap函数执行过程中利用内存唯一的地址达到对main函数局部变量ab值的改变。main函数调用swap函数时的实参是两个指针地址。 


http://www.kler.cn/a/14360.html

相关文章:

  • 代码随想录算法训练营第五十五天|392.判断子序列、115.不同的子序列
  • itop-3568 开发板系统编程学习笔记(18)LED 应用编程
  • qiankun 框架是怎么做的样式隔离
  • SpringBoot配置文件
  • Ingonyama团队的ZKP加速
  • docker常用命令
  • servlet技术
  • 云原生|kubernetes|rancher-2.6.4安装部署简明手册
  • Oracle的学习心得和知识总结(二十二)|Oracle数据库Real Application Testing之Database Replay实操(二)
  • redis学习笔记
  • Rust之泛型、特性和生命期(一):基本概念
  • 记录自己第一次项目管理(附件:WBS计划与会议纪要模板)
  • 操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)
  • 【iOS】—— 响应者链和事件传递链
  • 我实现了一个乞丐版的评论功能
  • C语言函数大全-- q 开头的函数
  • 搞懂位图和布隆过滤器
  • 【社区图书馆】 Go佬—Go程序开发实战宝典书评
  • Django项目之经济预测平台,应用LSTM、GBDT等算法
  • 管理系统的实现_01