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

news2024/11/19 3:43:04

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

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

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

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

 

目录

传递就是复制!!!

数组传入函数:


传递就是复制!!!

#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.coloradmin.cn/o/451350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是摄像头组播技术?有哪些应用场景?

摄像头组播技术是一种广泛应用于视频会议、网络监控等领域的网络传输技术&#xff0c;它将摄像头采集到的视频信号通过网络进行传输&#xff0c;实现多用户同时观看。本文将介绍摄像头组播的基本原理、应用场景以及存在的问题与解决方案。 一、摄像头组播的基本原理 摄像头组播…

法规标准-EU 2021-646标准解读

EU 2021-646是做什么的&#xff1f; EU 2021-646全称为关于机动车紧急车道保持系统&#xff08;ELKS&#xff09;型式认证统一程序和技术规范&#xff0c;其中主要描述了对认证ELKS系统所需的功能要求及性能要求 基本要求 1.应急车道保持系统&#xff08;ELKS&#xff09;应…

obsidian体验组件世界

title: 组件世界-初体验 date: 2023-04-23 13:23 tags: &#x1f308;Description&#xff1a; ​ 逛网站的时候看到的组件库&#xff0c;感觉很漂亮&#xff0c;记录并实验看下效果。 我用的是 obsidian&#xff0c;所以本文是基于 obsidian 来实验组件世界的效果。 组件世界-…

iMazing2023最新免费版iOS设备管理软件

iMazing是一款功能强大的iOS设备管理软件&#xff0c;它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外&#xff0c;它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性&#xff0c;并教…

设计模式 --- 行为型模式

一、概述 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在类间分…

《安富莱嵌入式周报》第310期:集成大语言模型的开源调试器ChatDBG, 多功能开源计算器,M7内核航空航天芯片评估板, Zigbee PRO规范

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1GM41157tV/ 《安富莱嵌入式周报》第310期&#xff1a;集成大语…

Spring Gateway + Oauth2 + Jwt网关统一鉴权

之前文章里说过&#xff0c;分布式系统的鉴权有两种方式&#xff0c;一是在网关进行统一的鉴权操作&#xff0c;二是在各个微服务里单独鉴权。 第二种方式比较常见&#xff0c;代码网上也是很多。今天主要是说第一种方式。 1.网关鉴权的流程 重要前提&#xff1a;需要收集各个…

循环代码模型构建方法

循环结构是源代码程序的重要结构&#xff0c;然而即使是简单的循环程序&#xff0c;也很容易出错&#xff0c;循环中的很多错误往往需要执行多次或者在某些特定的情况下才能被发现&#xff0c;检测这些错误的代价很高&#xff0c;所以需要重点开展对软件循环代码的安全性分析研…

简单聊下HBase

大家好&#xff0c;我是易安&#xff01; Google发表了三篇论文&#xff0c;即GFS、MapReduce和BigTable&#xff0c;被誉为“三驾马车”&#xff0c;开启了大数据时代。今天我们来聊一下BigTable对应的NoSQL系统HBase&#xff0c;看看它是如何处理海量数据的。 在计算机数据存…

Mybatis 全局配置文件 mybatis-config.xml

1、全局配置文件的用处 mybatis通过配置文件可以配置数据源、事务管理器、运行时行为、处理别名、类型处理、插件等信息。在mybatis应用初始化时&#xff0c;程序会解析全局配置文件&#xff0c;使用配置的信息实例化Configuration组件&#xff0c;完成基本配置的初始化。在my…

图论 Union-Find 并查集算法

union-find API&#xff1a; class UF { public:/* 将 p 和 q 连接 */void union(int p, int q);/* 判断 p 和 q 是否连通 */bool connected(int p, int q);/* 返回图中有多少个连通分量 */int count(); };连通性概念 触点&#xff1a;每个单独的不与任何点相连的点叫做触点 连…

绿色智慧档案馆构想之智慧档案馆环境综合管控一体化平台

【智慧档案馆整体效果图】 智慧档案库房一体化平台通过智慧档案管理&#xff0c;实现智慧档案感知协同处置功能&#xff1b;实现对档案实体的智能化识别、定位、跟踪监控&#xff1b;实现对档案至智能密集架、空气恒湿净化一体设备、安防设备&#xff0c;门禁设备等智能化巡检与…

camunda流程引擎receive task节点用途

Camunda的Receive Task用于在流程中等待外部系统或服务发送消息。当接收到消息后&#xff0c;Receive Task将流程继续执行。Receive Task通常用于与Send Task配合使用&#xff0c;以便流程可以在发送和接收消息之间进行交互。 Receive Task可以用于以下场景&#xff1a; 1、等…

DAB-DETR代码学习记录之模型解析

DAB-DETR是吸收了Deformable-DETR&#xff0c;Conditional-DETR&#xff0c;Anchor-DETR等基础上完善而来的。其主要贡献为将query初始化为x,y,w,h思维坐标形式。 这篇博文主要从代码角度来分析DAB-DETR所完成的工作。 DAB-DETR主要是对Decoder模型进行改进。博主也主要是对Dec…

【C++】6. 内联函数

文章目录 前言一、宏函数二、内联函数三、内联函数的易错点 前言 当我们调用函数时&#xff0c;是有很多消耗的。其中最大的销毁就是为函数开辟空间 - 函数栈帧。 如果我们有一个函数&#xff0c;很短&#xff0c;而且要调用很多次&#xff0c;比如Swap()。它所造成消耗就比较…

机器学习笔记Python笔记:HMM(隐马尔科夫模型)

1 引子&#xff1a;猜天气小游戏 一对异地恋的情侣&#xff0c;女朋友想根据男友的心情猜测男友所在城市的天气 1.1 天气和心情一定一一对应 晴天——>高兴雨天——>烦躁 可以根据心情唯一确定天气 1.2 天气和心情没有一一对应 晴天——>80%高兴&#xff0c;20%烦…

有关实现深拷贝的四种方法

深拷贝与浅拷贝: 在开始之前我们需要先了解一下什么是浅拷贝和深拷贝&#xff0c;其实深拷贝和浅拷贝都是针对的引用类型&#xff0c;JS中的变量类型分为值类型&#xff08;基本类型&#xff09;和引用类型&#xff1b;对值类型进行复制操作会对值进行一份拷贝&#xff0c;而对…

Logstash学习

一、Logstash基础 1、什么是Logstash logstash是一个数据抽取工具&#xff0c;将数据从一个地方转移到另一个地方。下载地址&#xff1a;https://www.elastic.co/cn/downloads/logstash logstash之所以功能强大和流行&#xff0c;还与其丰富的过滤器插件是分不开的&#xff…

CDGP认证|ChatGPT的出现,对数据治理行业冲击如何?

ChatGPT的出现对数据治理有很多好处&#xff0c;其中最明显的是提供了更高效、更准确和更自动化的数据处理和分析服务,可以帮助企业和组织更好地管理和利用数据资源&#xff0c;提高数据质量和决策效率。此外&#xff0c;ChatGPT还能够发现隐藏在大量数据中的信息和趋势&#x…

OJ练习第82题——填充书架

填充书架 力扣链接&#xff1a;1105. 填充书架 题目描述 给定一个数组 books &#xff0c;其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架…