嵌入式初学-C语言-十五

embedded/2024/10/18 19:07:59/

函数的概述

  1. 函数:实现一定功能的,独立的代码模块,我们的函数一定是先定义后使用
  2. 使用函数的优势
  1. 可以通过函数提供功能给别人使用,当然我们也可以使用别人提供的函数,减少代码量
  2. 借助函数可以减少重复性代码。
  3. 实现结构化(模块化)程序设计思想

结构化程序设计思想:将大型的任务功能,划分为相互独立的小型的任务模块来设计

3.函数是c语言程序的基本组成单元:

       C语言程序是由一个(必然是main函数)或多个函数组成。

函数的分类

从函数实现的角度

  1. 库函数:C语言标准库实现并提供使用的函数;比如:printf(),scanf()
  2. 用户自定函数:需要程序员自行实现,开发中大部分都是这样的函数

从函数的形式的角度

  1. 无参函数:函数调用时,无需传参,可配可不配返回值
  2. 有参函数:函数调用时,需要参数传递数据,经常需要配套返回值使用

相关概念

  1. 主调函数:主动去调用其他函数的函数
  2. 被调函数:被调用的函数
    // 此时main是主调函数,需要注意的是,main只能作为主调函数
    int main()
    {
    // 此时printf()是被调函数
    printf("hello world!");
    return 0;
    }

很多时候,一个函数既可以是主调函数也可以是被调函数,这种情况一般出自自定义函数

int fun_b()
{printf("执行B\n");
}
int fun_a()
{printf("执行A\n");fun_b();
}
int main()
{fun_a();
}

函数的定义

语法:

返回类型 函数名(形参列表)                 -- 函数头 | 函数首部

{

函数体语句;(函数体)                   -- 函数体,整个{}包裹的内容包括返回值都属于函数体 }

函数首部:

  1. 返回类型:函数返回值的类型
  2. 函数名:函数的名称,遵循标识符命名(使用英文字母、数字、_、$,不能以数字开头,建议小写+下划线命名法)
  3. 形参列表:用于接收主调函数传递的数据,如果有多个用逗号分隔,且每一个形参都需要指定类型
void fun1(int a,int b)
{}

main() // 问main的返回类型是?int 如果省略类型标识符,则默认返回int
{}

注意:

  1. 函数类型标识符变量类型说明符相同,它表示返回的函数值的类型。
  2. 在C语言中还可以定义无类型(即void类型)的函数,这种函数不返回函数值,只是完成某种功能
  3. 如果省略函数的类型标识符,则默认为是int型。
  4. 函数中返回语句的形式为 return(表达式);或 return 表达式;其作用是将表达式的值作为函数值返回给调用函数。其中表达式的类型应与函数类型一致。
  5. 如果形参列表中有多个形式参数,则它们之间要用逗号分隔
  6. 如果形参列表中有多个形式参数,即使他们的类型是相同的,在形参列表中也只能逐个说明
  7. 一个完整C程序中的所有函数可以放在一个文件中,也可以放在 多个文件中。

 案例

案例1.

/*
* 需求:计算1到5之间个自然数的阶乘值
*/#include <stdio.h>// 定义一个函数,用来实现阶乘
int p(int n)
{int k,s;// k:循环变量,s:阶乘结果s = 1;for(k = 1;k <= n;k++) s *= k;return s;
}int main()
{int m;// 来管理参与计算的自然数int n = 5;// 定义范围int s = p(n);printf("1~5之间自然数的阶乘值是%d\n",s);
}

案例2

/**
* 需求:计算并输出一个圆台两底面积之和。
*/
#include <stdio.h>
// 定义PI
#define PI 3.1415926
/**
* 定义一个函数,实现圆的面积的计算
* @param r 圆的半径
* @return 圆的面积
*/
double circleArea(double r)
{// 圆的面积 = PI * r * rreturn PI * r * r;
}/**
* main函数以后只做输入输出
*/
int main()
{// 定义两个半径,两个面积double r1,r2,area1,area2;printf("请输入两个圆的半径:\n");scanf("%lf,%lf",&r1,&r2);// 调用函数计算两个圆的面积area1 = circleArea(r1);area2 = circleArea(r2);printf("一个圆台两底面积之和是:%lf\n",area1 + area2);return 0;
}


http://www.ppmy.cn/embedded/93492.html

相关文章

如何选择最适合您需求的数据恢复工具?适用于 Windows 的 7 大数据恢复工具

数据丢失可能是一种令人沮丧的经历&#xff0c;无论是由于意外删除、磁盘格式化还是系统崩溃造成的。幸运的是&#xff0c;Windows 用户可以使用几种可靠的数据恢复工具来有效地恢复丢失的文件。以下是七大数据恢复工具的汇总&#xff0c;包括奇客数据恢复的产品&#xff1a; 适…

【Material-UI】按钮与第三方路由库的集成详解

文章目录 一、ButtonBase 组件简介二、与第三方路由库的集成1. React Router示例代码 2. Next.js示例代码 三、客户端导航的优势四、其他自定义集成1. 使用自定义组件示例代码 五、总结 在现代前端开发中&#xff0c;单页应用&#xff08;SPA&#xff09;变得越来越普遍。这种应…

quark-design 原生引入使用说明

说明:旧项目前后不分离 使用原生html开发的情况下 以动作面板举例: esm全局引入的方式 <script type"module"> import quarkd from "https://cdn.jsdelivr.net/npm/quarkd2.0.4/esm" //直接使用 quarkd.ActionSheet({actions: [{ name: "Opti…

SQL Zoo 9-.Window functions

以下数据均来自SQL Zoo 1.Show the lastName, party and votes for the constituency S14000024 in 2017.&#xff08;显示2017年选区“S14000024”的姓氏、政党和选票&#xff09; SELECT lastName, party, votesFROM geWHERE constituency S14000024 AND yr 2017 ORDER BY…

抖音限制IP登录怎么解决?什么情况下代理IP并发请求有限制?

在现代的网络环境中&#xff0c;大型平台如抖音为了保护自己的数据安全和提高服务质量&#xff0c;通常会实施一些策略限制&#xff0c;例如IP登录限制。这类措施能有效防止恶意攻击和滥用&#xff0c;但同时也可能给合法用户和开发者带来不便。在本文中&#xff0c;我们将探讨…

Spring IOC 注入的3种方式

Spring IOC 注入的3种方式 1. 构造器注入&#xff08;Constructor Injection&#xff09;2. Setter方法注入&#xff08;Setter Injection&#xff09;3. 字段注入&#xff08;Field Injection&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路…

System Composer与AUTOSAR结合

AUTOSAR 是软件架构在汽车行业的特殊应用&#xff0c;其“在标准上开放&#xff0c;在实施上竞争”的理念推动了流程的专业化分工&#xff0c;形成了成熟的开发工具链。Simulink 的 AUTOSAR Blockset 是 AUTOSAR 应用层软件开发的主流工具&#xff0c;与 System Composer 的结合…

【hadoop】常用命令

集群信息 查看hadoop版本 hadoop version查询hdfs系统中的namenode # 方式一 hdfs getconf -namenodes# 方式二 hdfs getconf -confKey dfs.namenode.http-address获取NameNode restful接口 hdfs getconf -confKey dfs.namenode.http-address hdfs getconf -confKey dfs.na…