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

【c语言】函数的数据传递原理 | 数组传入函数方法

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

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

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

函数基本概念知识:函数的基本概念、含义、结构

 

目录

传递就是复制!!!

数组传入函数:


传递就是复制!!!

#include <stdio.h>
int add(int a, int b);
int main()
{int a = 10,b = 20;printf("%d\n",add(a,b));return 0;
}
int add(int a,int b)
{int sum=0;sum=a+b;return sum;
}

修改add函数中的a并不会改变main函数中的a:  

当实参a传入add函数中,并不是a真正传入函数中,而是以复制的方式传给了add中的a

当传入地址时,复制的就是地址,传入基本类型数据时,复制的就是参数值 

函数的数据传递:复制方式

基本类型:复制 数值

指针类型:复制 地址

数组传入函数:

一个传入数组求和的函数如下 :

#include <stdio.h>
int add_all(int a[]);
int main()
{int arr[]={6,1,4,5,7};printf("%d\n",add_all(arr));return 0;
}int add_all(int a[] )  //目的:传入数组 但是运行结果只有数组首位元素被传入
{int sum=0;int len=sizeof(a)/sizeof(a[0]);int i;for(i=0;i<len;i++){sum+=a[i];    //结果为数组首位数据,不为期待的数组求和!}return sum;
}

结果为什么不是所期待的数组求和,而只输出了数组的首位数据?

原因是int add_all(int a[ ] ) 中传入函数的a[ ]并不是整个数组,而是数组第一位数据的地址!是指针类型:

 传入的数组长度为1,只有数组首位元素6这一个数据。

 如果想将整个数组传入函数中,就需要给定数组的长度len:

 传入的a[ ] 仍然为数组第一位的地址,但是给定了len长度,数组第一位加上len长度的偏移,就可以遍历整个arr数组了。

具体实现如下: 

#include <stdio.h>
int add(int a, int b);
int add_all(int a[],int len);
int main()
{int arr[]={6,1,4,5,7};printf("%d\n",add_all(arr,sizeof(arr) / sizeof(arr[0]) ) );return 0;
}int add_all(int a[],int len)
{int sum=0;int i;for(i=0;i<len;i++){sum+=a[i];   // *(a+i)}return sum;
}

http://www.lryc.cn/news/62409.html

相关文章:

  • vue3源码(3)——computed
  • 数学建模第七天:数学建模算法篇之插值及MATLAB实现
  • RUST 每日一省:生命周期作用域
  • 【过程8】——能量守恒视角总结感受
  • kong(4):限流配置
  • 人脸识别 Face Recognition 入门
  • 【AI绘画】Midjourney的使用及程序示例
  • 无公网IP?教你在外远程访问本地wamp服务器「内网穿透」
  • leetcode 628. 三个数的最大乘积
  • fork函数如何创建进程,exit/_exit函数如何使进程终止的详细分析与代码实现
  • 重置电脑时提示“缺少所需的驱动器分区”怎么办?
  • 在KylinV10安装Dm8
  • 「SQL面试题库」 No_46 交换工资
  • SLAM论文速递【SLAM—— RDS-SLAM:基于语义分割方法的实时动态SLAM—4.24(1)
  • OJ练习第82题——填充书架
  • OHOS IDE和SDK的安装方法
  • New Year Garland(计数类DP)
  • 32岁阿里P7,把简历改成不知名小公司,学历改成普通本科,工作内容不变,投简历全挂!...
  • 从三室心脏MRI影像检测主动脉瓣病变
  • 【JavaWeb】JavaScript
  • Apache Doris 1.2.4 Release 版本正式发布|版本通告
  • 【C++STL】map
  • vue2项目PC端如何适配不同分辨率屏幕
  • CorelDRAW2023最新版本图像设计软件
  • 第64章 树型结构数据的前端渲染渲染显示示例
  • 超级国际象棋:第二个里程碑已完成
  • vue3 HTML 和静态资源
  • 5G基站外市电改造建设方案 (ppt可编辑)
  • C++ 类和对象(上)
  • 【BIM+GIS】BIM模型导入GIS软件之前的一些处理设置