C语言------函数

C语言的两个重要关键字:static&&extern

会报错,是a未定义,说明局部变量a只能够在内部的括号里面使用;

如果a是全局变量,那么a就全部可以使用;

在不同的文件中,如果想要使用的某个变量没有在本文件定义,需要使用extern关键字声明;

作用域:哪里能够使用,哪里就是作用域;

局部变量的作用域就是变量所在的局部范围,全局变量的作用域是整个项目文件;

生命周期:从创建到销毁的时间历程;

局部变量:进入作用域创建,生命周期开始,出作用域生命周期结束;

全局变量:整个文件的生命周期;

static关键字的使用:

(1)修饰局部变量:

根据打印的结果就可以知道,a的值在加上static之后,a的值会被保留;

static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本
来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变
量和全局变量是⼀样的,⽣命周期就和程序的⽣命周期⼀样了,只有程序结束,变量才销毁,内存才回收。但是作⽤域不变的
(2)修饰全局变量:
尽管使用extern进行声明,但是如果加上static之后就无法使用,因为加上以后全局变量的外部链接属性就变成了内部链接属性,只能在自己的文件使用,变得相对安全;
(3)修饰函数:
函数也是具有外部链接属性,但是static修饰后就会变成内部链接属性;
------------------------------
----------------------------
------------------------
1.库函数&&自定义函数:库函数可以直接使用,但是需要包含对应的头文件;自定义函数就是为
了实现特定的功能而定义的函数,包括函数名,返回类型,函数体,形式参数;

2.形式参数和实际参数:形式参数是实际参数的一份临时拷贝;

如果只是定义了 函数,⽽不去调⽤, 函数的参数 x 和 y 只是形式上存在的,不会向内存申请空间,
不会真实存在的,所以叫形式参数。形式参数只有在 函数被调⽤的过程中为了存放实参传递过来
的值,才向内存申请空间,这个过程就是形参的实例化
3.return语句:
(1)return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达式 的结果。
(2)return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。
(3)return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。
(4)r eturn语句执⾏后,函数就彻底返回,后边的代码不再执⾏。
(5)如果函数中存在if等分⽀的语句,则要保证每种情况下都有return返回,否则会出现编译错误

4.数组作为函数的参数:

函数的形式参数要和函数的实参个数匹配
函数的实参是数组,形参也是可以写成数组形式的
形参如果是⼀维数组,数组⼤⼩可以省略不写
形参如果是⼆维数组,⾏可以省略,但是列不能省略
数组传参,形参是不会创建新的数组的
形参操作的数组和实参的数组是同⼀个数组

5.函数的声明和定义:函数的调用必须先声明后使用,函数的定义也是一种特殊的声明;

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

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

相关文章

万户 ezOFFICE DocumentEdit_unite.jsp SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

【Java-JDK】JDK 的安装与环境变量的配置:Windows Linux

【Java-JDK】JDK的安装与环境变量的配置:Windows & Linux 1)Windows安装JDK1.1.下载JDK1.1.安装JDK1.2.JDK环境配置1.3.验证环境变量是否配置成功 2)Linux安装JDK2.1.下载JDK2.2.安装JDK2.3.JDK环境配置2.4.验证环境变量配置是否成功 1&a…

如何有效避免市场恐慌性抛售?

布雷特斯坦伯格是一位备受尊敬的交易心理导师,曾担任华尔街多家顶级培训机构的心理导师,指导交易员们如何应对心理挑战。作为一名心理学教授和资深交易员,他对交易心理的理解远超常人。人们普遍认为,要想在交易领域取得成功&#…

Zynq UltraScale+使用记录-----配置和程序固化

新手使用记录 芯片:xczu3eg-sfvc784-2-i 开发板:米联客8X-3EG (B) 开发环境:vavido2019.2 1. create block design 主要配置了UART0(输出信息)\SD1(SD卡启动)\BANK电平\…

qt学习:Table widget控件

目录 头文件 实战 重新配置ui界面 添加头文件 在构造函数中添加初始化 显示方法 该实例是在sqlite项目上添加qt学习&#xff1a;QTSQL连接sqlite数据库增删改查-CSDN博客 头文件 #include <QTableWidgetItem> 实战 重新配置ui界面 用法介绍&#xff0c;可以双击…

Redis核心技术与实战【学习笔记】 - 7.Redis GEO类型 - 面向 LBS 应用的数据类型

前言 前面&#xff0c;介绍了 Redis 的 5 大基本数据类型&#xff1a;String、List、Hash、Set、Sorted Set&#xff0c;它们可以满足绝大多数的数据存储需求&#xff0c;但是在面对海里数据统计时&#xff0c;它们的内存开销很大。所以对于一些特殊的场景&#xff0c;它们是无…

解析Kubernets pod DNS域名

k8s dns理解 这个博主讲的很详细 我的这篇文章主要是演示测试 k8s的dns nslookup怎么解析到k8spod域名 创建一个busybox的pod&#xff0c;测试一下pod内是否可以解析 1、流程验证 cat >dns-Deployment.yaml<<EOF apiVersion: apps/v1 kind: Deployment metadata:nam…

文本三剑客之grep

目录 一、正则表达式 1、什么是正则表达式 2、元字符 3、扩展正则表达式元字符 二、grep 一、正则表达式 1、什么是正则表达式 REGEXP&#xff1a; Regular Expressions&#xff0c;由一类特殊字符及文本字符所编写的模式&#xff0c;其中有些字符&#xff08;元字符&#…

tidb节点重启后,服务无法重连

大家好&#xff0c;我是烤鸭&#xff1a; 前几天遇到tidb节点重启后服务无法重连&#xff0c;确切地说是两个服务&#xff0c;一个可以正常重连&#xff0c;一个不行。 问题复现 由于线上执行慢SQL&#xff0c;导致TiDB 单个节点宕机重启。 其中A服务的3个节点和B服务的1个节…

STM32——USART

一、通信 1.1通信是什么&#xff1b; 通信是将一个设备的数据发送到另一个设备中&#xff0c;从而实现硬件的扩展&#xff1b; 1.2通信的目的是什么&#xff1b; 实现硬件的扩展-在STM32中集成了很多功能&#xff0c;例如PWM输出&#xff0c;AD采集&#xff0c;定时器等&am…

springboot142新冠病毒密接者跟踪系统

新冠病毒密接者跟踪系统设计与实现 摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff…

【css】设置渐变阴影

css的属性中没有直接设置渐变阴影的&#xff0c;但是可以通过伪元素去实现。 .box-wrap{width: 100%;display: grid;place-content: center; } .box {width: 150px;height: 150px;background: #eee;border: 1px solid #585252;position: relative;transform: translate(0);/* …