学习笔记——C语言基本概念函数——(9)

今天开始函数的学习

目录

1、函数的基本概念

1.1函数的意义

1.2函数的分类

2自定义函数

2.1自定义函数的整个过程

函数定义

函数声明

函数调用

实参

形参和实参的关系

2.2函数传参

地址传递

2.3static的使用


1、函数的基本概念

1.1函数的意义

        概念:一个大的程序一般应分为若干个程序模块,每一个模块实现一个特定的功能,这些模块被称之为子程序,在c语言中子程序用函数实现。

作用:封装代码,减少重复

1.2函数的分类

        主函数:一个项目或者一个工程都有且仅有一个主函数,程序的运行都是从main函数开始,终止于main函数。

        子函数:

        库函数:标准库函数(系统函数)

                       非标尊库函数、第三方函数

        数库:

自定义子函数:自己写的函数;

2自定义函数

2.1自定义函数的整个过程

1-->函数的定义--函数实现功能的整个过程。

2-->函数的声明--告诉编译器,该函数存在。

3-->函数的调用--函数真正的运行。

函数定义

格式:

        返回值类型 函数名(形参类型        形参名,,,,)//函数头

{

        函数体;//实现真正的功能;

        return 返回值

}

返回值类型: 和 return 后面的具体的返回值保持一致即可;
无返回值: 返回值类型写 void;
注意: 返回值只能返回一个数!
函数名: 遵循标识符命名规则; -- 驼峰式 -- Dht11_Init , Fun
 

形参:
函数在定义的时候写在函数名后面的小括号种的参数, -- 形参
1--> 如果没有形参 -- ( void 或者不写)
2-->形参类型和形参名必须一一对应, (int a,int b)--局部变量
3-->形参列表也叫做定义变量, 在形参列表定义过的变量, 直接在函数体使用即可, 不
能再重复定义
 

函数声明

格式:函数头:

功能:告诉编译器,该函数存在

位置:放在调用它的函数的上面,一般统统放在main函数的上面。

函数调用

格式:

        返回值类型 变量名=函数名(实参);

        返回值类型和函数的返回值类型保持一致;

        变量名:符合标识符命名规则

        函数名:用于别调用的函数名;

实参

        函数被调用的时候,括号里面的提供的叫实参

        1-->如果没有形参,实参就不用提供,什么都不写

        2-->实参可以是变量、表达式、常量、地址,数组等

        3-->实参不能写数据类型

形参和实参的关系

        1-->形参的起始值来自于实参!

        2-->实参的个数和位置必须和参数一一对应,传参也按照对应位置传递。

        3-->形参和实参各自占用不同的内存空间

        4-->形参名和实参名可以一行,也可以不一样,各种是各自的局部变量。

函数调用的其他格式:

        有参有返: 返回值类型 变量 = 函数名(实参);
        有参无返: 函数名(实参);
        无参有返: 返回值类型 变量 = 函数名();
        无参无返: 函数名();

注意:
子函数执行: 只有被调用, 才能执行, 并且只有被调用计算机才分配空间;
子函数执行完, 空间会被释放
 

2.2函数传参

值传递:

形参的起始值来自于实参,形参的变化不会引起实参的改变。

举例说明:

原因:形参和实参各自占用不同的内存空间

地址传递

传递变量的地址,通过指针,改变指针指向的空间内容。

数组传参:属于地址传递,写数组名--数组名表示数组的首元素地址

2.3static的使用

全局变量和局部变量:
全局变量: 定义在函数体外部的变量
生命周期: 从定义处开始, 到当前.c 结束;
作用范围: 从定义处开始, 到当前.c 结束;
局部变量: 定义在函数体内部的变量
生命周期: 从定义处开始, 到当前函数结束;
作用范围: 从定义处开始, 到当前函数结束;
 

static 修饰局部变量: 延长生命周期! !
位置: 定义局部变量的时候!
被 static 修饰的局部变量:
生命周期: 和全局变量一样
作用范围: 从定义处开始, 到当前函数结束;
 

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

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

相关文章

自定义协议 ,序列化和反序列化

目录 ​编辑 一,问题引入: 二,协议 三,自定义协议 1,协议 2, 序列化和反序列化 四,网络版本的计算器 1,协议的定制 2,计算逻辑 3,服务端 4,客户端 …

基于Spring Boot 3 + Spring Security6 + JWT + Redis实现接口资源鉴权

紧接上一篇文章,基于Spring Boot 3 Spring Security6 JWT Redis实现接口资源鉴权 系列文章指路👉 系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类 项目源码👉 /shijizhe/boot-test 文章目录 1. 修改 UserDetailsServic…

U盘文件突然消失:原因分析与恢复策略

U盘遭遇“幽灵”之手,文件不翼而飞 你是否曾遭遇过这样的诡异情况:前一天还好好存放在U盘里的文件,第二天却突然消失得无影无踪?这简直就像是一场无声的灾难,令人措手不及。U盘作为我们日常工作和生活中不可或缺的数据…

算法系列之数组里的双指针

文章目录 算法系列之数组里的双指针快慢指针代替双重循环暴力解法快慢指针法 用双指针来排序暴力解法双指针排序 算法系列之数组里的双指针 在数组和链表的算法中双指针常出现,这篇用两道题来看一下双指针在数组算法里的用处。 快慢指针代替双重循环 https://lee…

嵌入式3-29

今日作业&#xff1a;用fwrite 和 fseek功能&#xff0c;将一张bmp格式的图片更改成 德国国旗#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> typedef unsigned char bgr[3]; int main(int argc, const char *argv[])…

安装docker 并搭建出一颗爱心树

1、docker介绍 Docker 是⼀个开源的容器运⾏时软件&#xff08;容器运⾏时是负责运⾏容器的软件&#xff09;&#xff0c;基于 Go 语 ⾔编写&#xff0c;并遵从 Apache2.0 协议开源。 Docker可以让开发者打包⾃⼰的应⽤以及依赖到⼀个轻量的容器中&#xff0c;然后发布到任何…

开源大数据集群部署(十九)Hbase部署

作者&#xff1a;櫰木 1 HBASE 安装部署 hbase组件部署主机HMasterhd1.dtstack.com,hd2.dtstack.comHRegionServerhd3.dtstack.com,hd2.dtstack.com,hd1.dtstack.com 2 创建hbase Kerberos主体 在每台机器上进行生成 bash /data/kerberos/getkeytabs.sh /etc/security/key…

Kaggle注册验证码问题(Captcha must be filled out.)

Kaggle注册验证码问题 Captcha must be filled out.使用Edge浏览器 Header Editor 插件安装 下载插件Header Editor 导入重定向脚本 点击扩展插件&#xff0c; 打开Header Editor插件&#xff0c;进行管理 点击导入输入下载链接进行下载或者导入本地json文件(二者任选其一…

OpenHarmony系统开发之应用接口文件转换工具介绍

简介&#xff1a; 应用接口文件转换工具是根据异构格式接口文件(.h 文件)转换生成 OpenHarmony 系统应用层需要的 TS(type-script)接口文件(*.d.ts)的工具。若某个服务实现方式为 c&#xff0c;且供应用层访问的接口已在.h 文件中定义&#xff0c;此时&#xff0c;NAPI 接口开…

OpenHarmony无人机MAVSDK开源库适配方案分享

MAVSDK 是 PX4 开源团队贡献的基于 MavLink 通信协议的用于无人机应用开发的 SDK&#xff0c;支持多种语言如 C/C、python、Java 等。通常用于无人机间、地面站与通信设备的消息传输。 MAVLink 是一种非常轻量级的消息传递协议&#xff0c;用于与无人机&#xff08;以及机载无…

目标检测评价标准

主要借鉴&#xff1a;https://github.com/rafaelpadilla/Object-Detection-Metrics?tabreadme-ov-file 主要评价指标、术语&#xff1a; Intersection Over Union (IOU)&#xff1a;两个检测框交集面积与并集面积的比值 True Positive (TP)&#xff1a;IOU大于阈值的检测框…

计算机网络——30SDN控制平面

SDN控制平面 SDN架构 数据平面交换机 快速、简单&#xff0c;商业化交换设备采用硬件实现通用转发功能流表被控制器计算和安装基于南向API&#xff0c;SDN控制器访问基于流的交换机 定义了哪些可以被控制哪些不能 也定义了和控制器的协议 SDN控制器&#xff08;网络OS&#…