[C语言] 初始函数 & 数组

简介: (比如 ARM 指令 B、BL、BX、BLX 之类)然后才 跳转到目的指令处执行。这个时候所有的代码仅仅是按其将要执行的顺序排列而已。后来人 们发现这样写代码非常费劲,容易出错,也不方便。于是想出一个办法,把一些功能相对来 说能成为一个整体的代码放到一起打包,通过一些数据接口和外界通信。这就是函数的由来。 那函数能给我们带来什么好处呢?简单来说可以概括成以下几点:

✏函数的由来好处

首先在说函数的使用与概述之前,我们先了解一下函数给我们编程带来的好处😁

其实在汇编语言阶段,函数这个概念还是比较模糊的。汇编语言的代码往往就是从入口 开始一条一条执行,直到遇到跳转指令(比如 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;            //返回操作结果,结束
}

image.png

🖍调用函数实例

下列是函数调用的实例,函数实现两个数的比较!调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。

#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 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

数组的声明并不是声明一个个的变量而是一个集合。

所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。如下图所示:

image.png

数组中的特定元素可以通过索引访问也就是数组下标,第一个索引值为 0 如下所示:

image.png

🔓数组定义

类型说明符  数组标识符【常量表达式】

类型说明符:表示数组中所有元素的类型☑

数组标识符:表示该数组类型变量的名称,命名规则与变量名一致☑

常量表达式:定义了数组中存放的数据元素的个数,即数组长度。例如: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;
}

🖊运行结果如下所示:

image.png

目录
相关文章
|
16天前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
52 23
|
16天前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
46 15
|
16天前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
54 24
|
11天前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
49 16
|
11天前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
22 3
|
11天前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
12 2
|
15天前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
46 1
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
83 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
64 9
|
1月前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
57 6

热门文章

最新文章