[C语言] 初始函数 & 数组
2023-02-18 15:50:01 时间
?写在前面
- ? 作者简介:大家好,我是泽奀!
- ? 全栈领域新星创作者 ➕ 作者周榜: 45 ➕ 总排名: 5135 ?
- ? 个人主页:泽奀的博客_CSDN博客
- ? 点赞 ➕ 评论 ➕ 收藏 == 养成习惯?
- ? 系列专栏:【C】系列_泽奀的博客-CSDN博客
- ? 总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 ?
- ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ♦
目录
✏函数的由来好处
首先在说函数的使用与概述之前,我们先了解一下函数给我们编程带来的好处?
- 其实在汇编语言阶段,函数这个概念还是比较模糊的。汇编语言的代码往往就是从入口 开始一条一条执行,直到遇到跳转指令(比如 ARM 指令 B、BL、BX、BLX 之类)然后才 跳转到目的指令处执行。这个时候所有的代码仅仅是按其将要执行的顺序排列而已。后来人 们发现这样写代码非常费劲,容易出错,也不方便。于是想出一个办法,把一些功能相对来 说能成为一个整体的代码放到一起打包,通过一些数据接口和外界通信。这就是函数的由来。 那函数能给我们带来什么好处呢?简单来说可以概括成以下几点:
- 降低复杂性:使用函数的最首要原因是为了降低程序的复杂性,可以使用函数来隐 含信息,从而使你不必再考虑这些信息。
- 避免重复代码段:如果在两个不同函数中的代码很相似,这往往意味着分解工作有 误。这时,应该把两个函数中重复的代码都取出来,把公共代码放入一个新的通用函数中, 然后再让这两个函数调用新的通用函数。通过使公共代码只出现一次,可以节约许多空间。 因为只要在一个地方改动代码就可以了。这时代码也更可靠了。
- 限制改动带来的影响:由于在独立区域进行改动,因此,由此带来的影响也只限于 一个 或最多几个区域中。
- 隐含顺序:如果程序通常先从用户那里读取数据,然后再从一个文件中读取辅助数 据,在设计系统时编写一个函数,隐含哪一个首先执行的信息。
- 改进性能:把代码段放入函数也使得用更快的算法或执行更快的语言(如汇编)来 改进这段代码的工作变得容易些。
- 进行集中控制:专门化的函数去读取和改变内部数据内容,也是一种集中的控制形 式。
- 隐含数据结构:可以把数据结构的实现细节隐含起来。
- 隐含指针操作:指针操作可读性很差,而且很容易引发错误。通过把它们独立在函 数有序列表中,可以把注意力集中到操作意图而不是集中到的指针操作本身。
- 隐含全局变量:参数传递。
✒函数概述
- 什么是函数?函数在数学当中就已经学,当你给过不同的x的值我就可以得到一个不同的结果,C语言的函数其实也是一样的。函数 (function) 是完成指定特定人物的独立的代码程序。 语法规则定义了函数的结构和使用方式。虽然C中的函数和其他语言 中的函数、子程序、过程作用相同,但是细节上略有不同。一些函数执行某 些动作,如:printf()把数据打印到屏幕上;一些函数找出一个值供程序使用, 如strlen()把指定字符串的长度返回给程序。一般而言,函数可以同时具备以 上两种功能。
- 为什么要使用函数?首先,使用函数可以省去编写重复代码的苦差。如 果程序要多次完成某项任务,那么只需编写一个合适的函数,就比如说:你要编写代码实现计算机的功能,那么你就可以用函数把计算机的代码包装到你自定义的函数当中。就可以在需要 时使用这个函数,或者在不同的程序中使用该函数,就像许多程序中使用 putchar()一样。其次,即使程序只完成某项任务一次,也值得使用函数。因 为函数让程序更加模块化,从而提高了程序代码的可读性,更方便后期修改、完善。
- 概述函数 构成C程序的基本单元是函数,函数包含程序的可执行代码。函数是一组一组执行的代码语句,每个C程序当中都有函数,即主函数是main()函数当中,有且只有一个。注意:每个程序的入口以及出口都是位于 main 函数之中。所有简单的程序都可以定义其他额外的函数,编写程序的时候,并不是将所有的内容都放在主函数 main 当中为了方便规划、组织、编写和调试,一般的做法是将一个程序划分成若干个程序模块,每一个模块都可以完成一个功能。这样不同的模块程序可以由不同的人去完成,从而可以提高软件的开发效率。也就是说主函数可以调用其它的函数。其它的函数当中也是可以去互相调用的
?定义函数
C语言的库函数在编写的时候是可以直接调用的,比如 printf 输出函数。而用户自定义函数则必须由用户对其进行定义,在其函数的定义中完成函数所特定的内容功能,这样才能被其他函数调用。
C 语言中的函数定义的一般形式如下:
- 返回类型 函数名称(参数列表)
- {
- 函数体(函数实现特定功能的过程)
- }
- 返回类型:一个函数可以返回一个值。返回类型 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,返回类型 是关键字 void。
- 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
- 参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
- 函数主体:函数主体包含一组定义函数执行任务的语句。
?定义函数代码
代码示例如下:
int Add(int x, int y) //函数头部分
{
int z = x + y; //定义整形变量,实现加法的操作
return z; //返回操作结果,结束
}
函数头:标志一个函数代码的开始,这是函数的入口处。函数头组成分为③个部分。
函数体:函数头的下方位置,由一对大括号括起来,大括号决定了函数体的范围。函数要实现特定的功能,都是在函数体通过代码语句完成的,最后通过 return 语句返回实现的结果。
?调用函数实例
下列是函数调用的实例,函数实现两个数的比较!调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。
#define _CRT_SECURE_NO_WARNINGS 1
int Compare_size(int x, int y)
{
if (x > y)
return x;
else
return y;
}
#include<stdio.h>
int main(void)
{
int num1 = 0;
int num2 = 0;
printf("请输入:");
scanf("%d %d", &num1, &num2);
int result = Compare_size(num1, num2);
printf("result = %d\n", result);
return 0;
}
?数组
- C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
- 数组的声明并不是声明一个个的变量而是一个集合。
- 所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。如下图所示:
- 数组中的特定元素可以通过索引访问也就是数组下标,第一个索引值为 0 如下所示:
?数组定义
类型说明符 数组标识符【常量表达式】
- 类型说明符:表示数组中所有元素的类型☑
- 数组标识符:表示该数组类型变量的名称,命名规则与变量名一致☑
- 常量表达式:定义了数组中存放的数据元素的个数,即数组长度。例如:arr[10] ,10 表示数 组当中有10个元素,索引(下标)从 0 开始,到 4 结束☑
例如:定义一个数组:
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
在数组 arr[10] 中只能使用 [0~9],不能访问 arr[10],若使用就会出现下标越界错误! 注意:当数组不完全初始化也就是当数组元素比小标的值小的话,默认为 0 ☑
?数组的使用
题目:打印整形 1~10 的元素个数!— 如果在这里不用到数组的话,你就要创建10个变量来!
那么在这里我们用到数组就可以很好的进行存储,因为数组其实就是一组相同的元素的集合!
#include<stdio.h>
int main(void)
{
int i = 0;
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (i = 0; i < 10; i++)
{
printf("第%d元素:%d\n", i + 1,arr[i]);
}
return 0;
}
?运行结果如下所示:
相关文章
- Acrobat最经典的版本:PDF编辑器Acrobat 2021经典版,下载
- Adobe Acrobat Pro DC 2019(PDF) 软件下载安装包教程(附下载方法)
- Adobe Acrobat Pro DC 2018(PDF) 软件下载安装包教程(附下载方法)
- 仅需1% Embedding参数,硬件成本降低十倍,开源方案单GPU训练超大推荐模型
- 文件更小,质量更高,大火的Stable Diffusion还能压缩图像?
- 11分钟充电70%,华人教授在锂电池中加镍箔登上Nature
- 戴着VR头盔教机器人抓握,机器人当场就学会了
- 还未入职,这位将来的博导为学生规划了一条高效学习之路
- 英特尔i9-13900K重夺PC性能桂冠:与AMD 7950X拉开8%差距
- 价值1亿美金时,Stable Diffusion背后的团队开始互撕,谁才是真官方?
- NeurIPS 2022 | 用变分编码器生成周期图,时间、空间复杂度最低
- Bengio、LeCun 等人联名上书,呼吁美国投资神经AI,攻破「具身图灵测试」
- 30亿跑赢GPT-3的1750亿,谷歌新模型引热议,然而却把Hinton年龄搞错了
- Stable Diffusion新玩法,一句话帮你换图,网友魔改《戴珍珠耳环的少女》长这样
- LeCun转推,PyTorch GPU内存分配有了火焰图可视化工具
- ECCV 2022 | 摆脱部件标签依赖,上科大&ZMO.AI提出分部件3D人体重建与驱动新方法UNIF
- 清华作者排名第一,多人中稿超十篇:NeurIPS 2022统计数据出炉
- Transformer作者离职创业的公司,想从老东家谷歌再拿2亿美元融资
- 谷歌并未放弃TensorFlow,将于2023年发布新版,明确四大支柱
- 打破不可能三角、比肩5400亿模型,IDEA封神榜团队仅2亿级模型达到零样本学习SOTA