Linux C语言:函数的基本用法及传参

一、函数的基本用法

1、main函数

int main(int argc, const char * argv[]) {
printf("Hello world\n");
return 0;
}数据类型 函数名称 (参数) {
//....
return 表达式
}

2、函数

        函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。
一般形式如下:

<数据类型> <函数名称>( <形式参数说明> ) {
语句序列;
return[(<表达式>)];
}

  • <数据类型>是整个函数的返回值类型。
  •  return[(<表达式>)]语句中表达式的值,要和函数的<数据类型>保持一致。
  • 如无返回值应该写为void型
  • <形式参数说明>是逗号“,”分隔的多个变量的说明形式
  • 大括弧对 {<语句序列> },称为函数体;
  • <语句序列>是大于等于零个语句构成的

3、函数的调用 

函数的使用也叫函数的调用,形式如下:
        函数名称(〈实际参数〉)

  • 对于无返回值的函数来讲,只能形成一个函数调用语句。
  • 函数调用可以作为一个运算量出现在表达式中,也可以单独形成一个语句。
  • 实参就是在使用函数时,调用函数传递给被调用函数的数据。

4、函数的声明 

  • 函数的说明就是指函数原型
  • 其中,<形式参数说明>可以缺省说明的变量名称,但类型不能缺省
  • 例如:
    double power(double, int);

        编译器从上往下顺序进行编译 

二、函数的传参 

  •  函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。
  • 一般形式如下:
    <数据类型> <函数名称>( <形式参数说明> ) {
    语句序列;
    return[(<表达式>)];
    }

 1、什么叫形参

  • 形参全称为“形式参数”
  • 形参是在定义函数的时候使用的参数
  • 目的是用来接收调用该函数时传递的参数 

2、什么叫实参 

  • 实参,全称为"实际参数"。
  • 实参是在调用时传递给函数的参数,即传递给被调用函数的值。
  • 在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”。 

3、什么是参数传递 

  • 在程序运行过程中,将实际参数的值或者地址传递给被调用函数的形式参数,从而在函数中完成对数据处理和返回的过程。 
  • 在C语言当中,参数的传递方式本质上只有一种,就是值传递。
  • 但为了更好区分理解,划分了三种方式

4、函数的参数传递

1)函数之间的参数传递方式:

  • 全局变量
  • 值传递方式
  • 指针传递方式 


2)全局变量

  • 全局变量就是在函数体外说明的变量
  • 全局变量一经定义后就会在程序的任何地方可见。
  • 函数调用的位置不同,程序的执行结果可能会受到影响。不建议使用

三、函数传参-值传递 

1、值传递

  • 调用函数将实参传递给被调用函数,被调用函数将创建同类型的形参并用实参初始化 
  • 形参是新开辟的存储空间,在函数中改变形参的值,不会影响到实参

2、值传递方式的示意图 

  

四、函数传参-指针传递 

  • 按地址传递,实参为变量的地址,而形参为同类型的指针 
  • 被调用函数中对形参的操作,将直接改变实参的值
  • 被调用函数对指针的目标操作,相当于对实参本身的操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27664.shtml

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

相关文章

Java注解@Transa1ctional失效特殊情况

最近接手了一个项目需要在上面新加一个模块&#xff0c;我这边直接把之前的模块复制一份改改&#xff0c;去掉多余的文件就开始写了&#xff0c;但是就在一小时前&#xff0c;我调试接口的时候突然就发现事务回滚失效了&#xff0c;准确的说是事务都没有正常开启&#xff0c;这…

Linux vim 文本编辑 操作文本 三种模式

介绍 vi 是一个经典的行编辑器&#xff0c;支持模式编辑&#xff08;包括普通模式、插入模式和命令模式&#xff09;。 vim 保留vi核心功能的基础上&#xff0c;增加了多级撤销、语法高亮、插件支持等高级功能。 两者的最大区别&#xff0c;简单的来说vim就是vi的增强版 三…

Kafka生产者消息发送流程原理及源码分析

Kafka是一个分布式流处理平台,它能够以极高的吞吐量处理数据。在Kafka中,生产者负责将消息发送到Kafka集群,而消费者则负责从Kafka集群中读取消息。本文将探讨Kafka生产者消息发送流程的细节,包括消息的序列化、分区分配、记录提交等关键步骤。 先看一个生产者发送消息的代…

LaDM3IL:多实例学习用于免疫库分类

一个人的免疫组库由某一时间点的大量适应性免疫受体组成&#xff0c;代表了该个体的适应性免疫状态。免疫组库分类和相关受体识别有可能为新型疫苗的开发做出贡献。大量的实例对免疫组库分类提出了挑战&#xff0c;这可以表述为大规模多实例学习 (MMIL&#xff0c;Massive Mult…

pdf.js实现web h5预览pdf文件(兼容低版本浏览器)

注意 使用的是pdf.js 版本为 v2.16.105。因为新版本 兼容性不太好&#xff0c;部分手机预览不了&#xff0c;所以采用v2版本。 相关依赖 "canvas": "^2.11.2", "pdfjs-dist": "^2.16.105", "core-js-pure": "^3.37.…

苹果新型基于home app的骚扰

近期很多用户收到了新型骚扰信息&#xff0c;通过「家庭」邀请。 故障回显&#xff1a; 你会有到一条邀请你加入 Apple 智能家庭的邀请信息&#xff0c;但邀请信息的内容是骚扰信息&#xff0c;且骚扰信息中通常携带链接&#xff0c;千万不要随意打开。 这种骚扰方式暂时没有…

通信协议—Modbus

1、modbus简介 Modbus服务器&#xff1a;接收处理来自客户端的请求&#xff0c;并返回相应的响应&#xff1b; Modbus客户端&#xff1a;向Modbus服务器发送请求&#xff0c;并接收服务器返回的响应的设备或程序&#xff1b; 2、modbus poll调试工具下载 modbus poll用于测…

Python基础教程(二十):SMTP发送邮件

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

【C语言】assert.h——断言

文章目录 主要内容调试和发布模式使用示例用法总结与注意事项 断言是一种用于在程序执行过程中进行调试的工具&#xff0c;能够帮助开发者验证程序的某些假设是否为真。如果断言失败&#xff0c;程序会终止&#xff0c;并输出一个错误消息&#xff0c;通常包含出错的文件名和行…

13【MySQL必知必会】分组数据(GROUP BY,HAVING)

SQL语句 /*第13章 分组数据关键词&#xff1a;分组数据&#xff0c;GROUP BY&#xff0c;HAVING*/-- 计算供应商ID为1003的产品数量 SELECT COUNT(*) AS num_prods FROM products WHERE vend_id 1003;-- 按供应商ID分组&#xff0c;统计每个供应商的产品数量 SELECT vend_id,…

Linux网络工具:跟踪 TCP 连接的命令tcptrack命令详解

目录 一、概述 二、 用法 1、基本用法 2、选项 三、安装 1、说明 2、Debian 系统中安装 3、centos中安装 &#xff08;1&#xff09;下载源代码 &#xff08;2&#xff09;编译源代码 &#xff08;3&#xff09;安装 四、示例和输出 1. 显示所有 TCP 连接 2. 只跟…

微信监控销售防飞单系统,让你的团队业绩稳如泰山!

团队中偶尔出现的私单、飞单问题而烦恼不已&#xff1f;你是否渴望拥有一个神器&#xff0c;能够实时监控销售过程&#xff0c;确保团队业绩的稳健增长&#xff1f;今天&#xff0c;就让我们一起探索这款神奇的“微信监控销售防飞单系统”&#xff0c;让你的销售团队如虎添翼&a…

React 渲染流程分析

React 页面是由组件组成的&#xff0c;从根组件直到叶组件&#xff0c;内部的组件数通过 Fiber 来保存并触发并发更新。页面的展示分为两部分&#xff0c;首先是初始化&#xff0c;所有组件首次展示&#xff0c;都要进行渲染&#xff0c;之后是更新流程&#xff0c;也就是页面产…

【利用python制作一个小程序生成爱心】

要利用Python制作一个小程序来生成爱心&#xff0c;我们可以使用字符图形或者利用图形库&#xff08;如turtle&#xff09;来绘制。下面我将分别展示这两种方法。 方法一&#xff1a;字符图形爱心 这种方法使用ASCII字符来模拟爱心的形状。 def print_love():heart [ ♥ …

实况:老菜鸟自力更生从零开始重学spring目标是画出一张唬人大图(二、源码下载编译)

前情提要&#xff1a;调试前的基础知识梳理 速览 “Spring”包含哪些东西源码下载源码编译1、编译工具选择&#xff1a;gradle2、使用gradle编译spring并导入idea预编译spring-oxm导入IDEA确认合适的jdk版本排除spring-aspects模块 开始调试 “Spring”包含哪些东西 可以明确的…

代码随想录算法训练营第二十四天| (回溯) 77. 组合、 216.组合总和III、17.电话号码的字母组合

77. 组合 题目链接&#xff1a;77. 组合 文档讲解&#xff1a;代码随想录 状态&#xff1a;很多细节忘了 思路&#xff1a;先画图&#xff0c;然后可以发现&#xff0c;从1到n中选择k个数&#xff0c;可以看成是一个递归过程&#xff0c;这个递归的深度就是k。然后遍历当前这层…

四舍五入 和 交换变量值 题目

题目 JAVA3 四舍五入分析&#xff1a;代码&#xff1a; JAVA4 交换变量值分析&#xff1a;代码&#xff1a;大佬代码&#xff1a; JAVA3 四舍五入 描述 定义一个int类型变量i,i为由浮点数变量d四舍五入后的整数类型&#xff0c;请将转换后的i进行输出。 输入描述&#xff1a;…

Centos7安装jdk8或11以及切换方案

目录 jdk安装 安装OpenJDK11 安装OpenJDK8 配置默认的 Java 版本 验证 全局环境变量&#xff08;选配&#xff09; 个人版&#xff08;自己可以用&#xff0c;公司不建议&#xff09; 公司版本 /etc/profile 和 ~/.bash_profile 区别 前言-与正文无关 生活远不止眼前的苦…

【动态规划】| 路径问题之不同路径 力扣62

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;动态规划 &#x1f397;️ 如何活着&#xff0c;是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/unique-paths/description/ 通常动态规划的题目有…

建筑电工精选最新模拟试题(含答案)

一、填空题 1、我国安全生产的基本方针是 安全 第一&#xff0c;预防 为主&#xff0c;综合治理。 2、特种作业人员&#xff0c;必须积极主动参加培训与考核 。既是法律法规的规定&#xff0c;也是自身工作&#xff0c;生产及生命安全 的需要 3、触电急救&#x…