C语言函数专题(嵌入式学习)

编程技巧之嵌入式C语言完全学习笔记及案例[图] 编程技巧之嵌入式C语言完全学习笔记及案例[图] 1、经典入门:hello world 1.1、概念: *源文件:源文件即源代码文件,C语言源文件后缀名是.c。 *头文件:头文件后缀名为.h(head,头),C语言代码由源文件和头文件组成。 *关键字:关键字是C语言征用了的一些字,这些字在C语言中代表特殊含义,已经被C语言定义好了,轮不到我们用了。每个关键字都有自己特定的含义,我们必须搞懂每个关键字... 阅读详情

1.定义

一个用来完成特定功能的代码模块

2.三要素

功能、参数、返回值

3.格式

存储类型 数据类型 函数名 (参数列表){

函数体;

return 表达式;

}

  1. 没有参数:参数列表可以省略,也可以用void
  2. 没有返回值:数据类型为void,函数内部没有return语句
    注意:定义子函数式,可以直接定义在main函数上面,也可以定义在main函数下面,但是需要提前声明函数。

4.函数声明

存储类型 数据类型 函数名(参数列表);//形参

5.函数调用

  1. 没有返回值:直接调用:函数名(实参);

  2. 有返回值:如果需要接收返回值就定义和返回值类型相同的变量去接收,如果不需要接收返回值,就直接调用。

练习1:编写一个函数,函数的2个参数,第一个是一个字符,第二个是一个char *,

返回字符串中该字符的个数。

int num(char ch,char * p)//遍历字符串,过程中判断*p是否等于ch
{
    int t=0;
    while(*p != '\0')
    {
        if(*p == ch)
            t++;
        p++;
    }
    return t;
}

6.函数传参

1.值传递

单向传递,将实参传递给形参使用,改变形参不会反向影响实参

2.地址传递

双向传递,在函数中修改形参,实参会随之改变

3.数组传递

和地址传递一样,参数中存在数组定义,会认为是指针

练习:封装函数实现两个数的交换

#include<stdio.h>
void exchange(int *a,int *b){
    int c;
    c=*a;
    *a=*b;
    *b=c;
}
int main(int argc, char const *argv[])
{
    int a,b;
    scanf("%d %d",&a,&b);
    exchange(&a,&b);
    printf("a=%d,b=%d",a,b);
    return 0;
}

补充:

char *p = “hello”;

//p在栈区开辟4字节空间,存放hello字符串首地址

//hello存在常量区

char buf[32]=“hello”;

//buf:在栈区开辟32个字节空间,存放“hello”字符串。

嵌入式C语言实战开发详解(一) 一、概述 1、嵌入式开发中为什么选择C语言? 因为操作系统的内核都是使用的C语言,而且C语言也有如下几个优点: (1)出色的移植性,能在多种不同体系结构的软/硬平台上运行(修改量越小,移植性越好); (2)简洁紧凑,使用灵活的语法机制,并能直接访问硬件(效率高); (3)很高的运行效率 阅读详情

相关推荐

从零到英雄:嵌入式C语言的进阶之路

嵌入式C语言的学习是一个循序渐进的过程,需要从基础语法开始,逐步深入到嵌入式系统开发的各个方面。通过理论学习与项目实践相结合,不断积累经验,你将能够在嵌入式领域取得更大的成就。希望本文为你提供了清晰的学习路径和实用的代码示例,助你在嵌入式C语言的进阶之路上一帆风顺。

RL2698853114的博客 1949

C语言函数简单使用

简单编写一个函数,函数的2个参数,第一个是一个字符,第二个是一个char *,返回字符串中该字符的个数。注意:定义函数的时候可以定义在调用函数前面,也可以定义在后面,但是定义在后面要提前声明该函数。编程实现strlen函数的功能,strlen计算字符串实际长度,不包含’\0’(2) 有返回值:如果需要接收函数返回值,定义一个同种类型的变量来接收。想要用于主函数下面,则需要复制函数的第一行,加符号;单向传递,将实参传递给形参使用,改变形参,实参不会受影响。和地址传递一样,参数中存在数组的定义,也认为是指针。

wxi_Carol的博客 245

嵌入式开发语言-C语言编程

C语言编程概述环境在Windows上构建C语言的环境安装在Mac上构建C语言的环境安装 概述 “C语言”被称为适合嵌入式系统开发的编程语言之一。 C语言在一般的编程中也是熟悉的开发语言,但实际上,如果试着使用C语言制作微型计算机的控制程序等,就必须使用与“普通的C程序”不同的使用方法。 作为一般的C语言的学习方法,使用“printf”“scanf”等标准函数的程序开发是固定的,但这些都是以UNIX和Windows等环境上的应用程序开发为前提的。 对此,没有显示器和键盘的嵌入式系统的微型计算机控制程序,该如何

编程老王 7976

记录——《C Primer Plus (第五版)》第十一章编程练习第5-12题

5.编写一个函数is_within(),它接受两个参数,一个是字符,另一个是字符串指针。其功能是如果字符在字符串中,就返回一个非0值(真);如果字符不在字符串中,就返回0值(假)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。# include <stdio.h>int is_within(char ch, char * string); void clear();// 清除每次输入

zgscsed的博客 2788

嵌入式学习——C语言函数(一)

函数就是用来完成一定功能的一段程序模块。类型标识符 函数名(参数表 )函数体语句return a>b?a:b;//比较a和b的大小,并返回大的那个值1)返回类型:函数的返回值类型2)函数名:遵循标识符规则3)形参列表:用于接受主调函数传递数据,如果有多个形参需要用逗号隔开,并且每一个形参需要说明具体的类型。

weixin_46432503的博客 1043

C语言 | 嵌入式重点知识之回调函数

前言 上文分享了一个专用的双链表的基本操作示例:双链表的操作示例(附代码) 这里提到了一个关键词:专用。与专用对应的词是通用。我们从字面上可以很容易理解这两个词,专用就是针对特定情况的,特点就是很有局限性;通用就是可以针对大多数情况(更理想的就是所有情况),特点就是适用性广。 为什么说上篇笔记的双链表是专用的? 从我们的定义的元素数据类型就可以知道,我们这个双链表是只是用来存储int类型的数据的...

嵌入式大杂烩 3063

写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码

题目要求: 写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码。 如(“我ABC”,4)应该截为“我AB”, 输入(“我ABC 汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。 public String subString(String str, int subBytes) { int bytes = 0; // 用来存储字符串的总字节数 for (int i = 0; i < str.length

小飞的博客 1019

用Cadence IC618和TSMC 180nm工艺,从零仿真一个2.4GHz双平衡吉尔伯特混频器

本文详细介绍了使用Cadence IC618和TSMC 180nm工艺从零开始仿真2.4GHz双平衡吉尔伯特混频器的完整流程。涵盖设计环境搭建、原理图设计、仿真配置、性能验证及版图设计等关键步骤,特别适合射频集成电路设计的学习者和实践者参考。通过实操技巧与工艺库结合的工程实践,帮助读者掌握混频器设计的核心技术。

weixin_30328063的博客 550

写一个函数, 2个参数, 1个字符串, 1个字节数,返回截取的字符串,要 求字符串中的中文不能出现乱码: 如 ( “ 我ABC”, 4) 应该截为 “ 我AB”,输入( “ 我 ABC汉DEF”, 6

public String subString(String str, int subBytes) { int bytes = 0; // 用来存储字符串的总字节数 for (int i = 0; i < str.length(); i++) { if (bytes == subBytes) { return str.substring(0, i); } char c = str.charAt(i

dandanyisheng的博客 1984

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 554

新华DCS系统仿真测试方法详细介绍

新华DCS ICAN3.1系统是应用广泛并且功能非常强大的国产DCS系统。具有管理虚拟CPU并仿真运行的功能。并且上位机画面可以与虚拟DPU数据实时同步仿真。具体仿真方法如下所示: 1、 需要设备及软件: 2、步骤如下: 2.1硬件步骤: 1)电脑开机。 2)交换机连接电脑网卡。 3)交换机上电运行。 2.2软件步骤: 1)设置电脑IP 一般配置IP为A网工程站IP。 222.222.221.201/255.255.255.0 2)建立虚拟DPU 登录 D:\iCAN\Program\Vxcu 文件夹。

lw_waston的博客 6891

写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如(“我ABC”,4)应该截为“我AB”,输入(“我ABC 汉DEF”,6)应该输出为“我ABC”

public class TestMY { public static void main(String[] args) { System.out.println("subString(\"王123\", 3) = " + subString("王123", 3)); } public static String subString(String str...

玉兰花秀丽 541

Photoshop实战技巧(9)——高效去除复杂水印的五种进阶方法

本文详细介绍了Photoshop中高效去除复杂水印的五种进阶方法,包括色阶通道爆破法、频率分离高阶应用、智能填充+手动修复组合拳等专业技巧。针对半透明水印、密集文字水印等复杂场景,提供分步操作指南和实战案例,帮助用户精准去除水印同时保留原始图像细节,大幅提升工作效率。

cake8的博客 960

C语言学习路线图

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭! 1、环境篇(ubuntu 系统安装 及环境调试) 学习内容:ubuntu 虚拟机安装以及嵌入式开发环境搭建ubuntu 物理机及 u 盘版安装ubuntu 与 windos 等其它系统互访服务配置安装编辑器、编译器、调试器安装及使用 2、环境篇(Linux 常用命令) Linux 日常高频率应用命令使用练习 、文件操作命令使用练习 、内容检索命令使用练习 压缩解压命令使用

qianfeng_dashuju的博客 7万+

104基于深度学习识别是AI生成还是真实图片

的可视化界面,通过点击左侧可以加载要识别的检测对象图片,点击中间的识别按钮,会识别出结果,识别结果在右侧显示,当前识别的图片是真实的图片,非假图片。有兴趣的小伙伴也可以自行扩充数据集,或训练自己的数据集。文本,分别存放了图片路径和对应的标签。文本里面的数据,并将训练好的模型也保存在本地。即可加载训练好的模型,真假图片进行识别。本期给大家介绍的是基于深度学习识别是。代码整体是非常简便的,总共三个。个文件夹分别是真图和。

xcvxvfgdfgfh的博客 2261

史上最全的Logisim运算器实验教程(基于华中科技大学计算机组成原理实验)

本博客是实现了Logisim的运算器设计,有具体的运算器设计的思路和运算器设计的电路,适合一步一步的按照思路做。

qq_62325622的博客 4万+

【C语言】C语言学习教程

 C 语言的应用领域极其广泛。在操作系统开发领域,大名鼎鼎的 Linux 操作系统,其内核大部分代码就是用 C 语言编写的。Windows 操作系统的底层核心部分,同样离不开 C 语言的支持。这是因为 C 语言能够直接操作硬件资源,对内存和 CPU 的控制精准高效,能够充分发挥硬件的性能,为操作系统的稳定运行提供坚实保障。

大雨淅淅的博客 2317

AD在建PCB封装时如何添加元器件的3D模型

3D模型

k1ang的博客 1万+

嵌入式学习 c语言_函数

定义一个函数的实现函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, 数据类型3 形式参数3,...)函数体;return 返回值;函数体;return 0;函数类型:函数运行结果的类型 int void char double float函数名:与变量名要求保持一致形式参数:对数据操作的方式(函数定义时形参必须有类型)返回值:函数的运行结果变量类型作用域生存周期存储类别局部变量函数/块内函数/块执行期间auto静态局部变量函数/块内整个程序运行期间。

qq_50223087的博客 1074

【Linux命令大全】006.网络通讯之netstat命令(实操篇)

本文详细介绍了Linux系统中netstat网络诊断命令的实用技巧。主要内容包括:1) 基本功能与参数详解,展示如何查看网络连接、路由表和接口统计;2) 安装方法及基础用法,如查看TCP/UDP连接、显示进程信息和路由表;3) 高级应用技巧,包括监听端口检查、连接状态统计和实时监控。文章通过表格和代码示例,系统性地呈现了netstat在系统管理中的核心应用场景,是网络故障排查和性能监控的实用指南。

yuhuasheng1997的博客 705

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

嵌入式C语言:回调函数

回调函数是嵌入式C语言开发中一种强大且灵活的编程机制。通过合理利用回调函数,可以提高嵌入式系统的响应速度、可扩展性和模块化程度。然而,在使用回调函数时,也需要注意栈空间管理、线程安全性和代码可读性等问题。只有综合考虑这些因素,才能充分发挥回调函数在嵌入式系统开发中的优势。

byte轻骑兵的技术小窝 9966

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言深入学习(嵌入式)

C语言笔记(嵌入式方向)

i1153的博客 2153

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

嵌入式C语言的学习(入门嵌入式必看)

文章后续会不断更新!本人专业方向为嵌入式,一边在学校系统地学习相关知识,一边又在实际项目中碰到问题再去学对应的解决方法。时间久了,累计的知识多了,于是想借着研读网上很火的嵌入式八股文,巩固整理一下已有的嵌入式知识,温故而知新嘛。

xiaoshen1046的博客 1865

学习嵌入式C语言要掌握到什么程度?

 学习嵌入式C语言的要求与通用C语言有所不同,嵌入式开发更注重对硬件资源的直接操作、实时性、内存管理以及对底层硬件的理解。以下是具体的学习目标和专业建议,帮助你明确嵌入式C语言需要掌握的程度。

weixin_40978412的博客 1694

C语言入门——嵌入式学习笔记

在学习嵌入式系统时,C语言的重要性不可忽视。作为嵌入式开发的主流语言,C语言以其高效的执行速度、直接访问硬件的能力以及良好的可移植性,成为处理资源受限的嵌入式设备(如微控制器和传感器)的理想选择。许多实时操作系统(RTOS)和底层驱动都基于C语言构建,掌握C语言能帮助学习者深入理解内存管理、指针操作和硬件交互等核心概念,从而为实际嵌入式项目(如物联网设备或工业控制系统)打下坚实基础。

2301_80406299的博客 728

《嵌入式C语言》C语言介绍及环境搭建

标题《嵌入式C语言》 --最具价值的嵌入式C语言 #1 C语言简介 C语言是国际上广泛流行的高级语言,是在B语言的基础上发展起来的, 1970年, 美国贝尔实验室的D.M.Ritchie设计了B 语言, 并用于编写了第一个UNIX操作系统。 1973年, D.M.Ritchie 在B语言的基础上设计出了C语言, 对B取长补短, 并用之改写了原来的UNIX。 • 1983年-1987年,美国国家标准化协会

xiaoeleis的专栏 2907
上一篇: C语言指针详解(嵌入式开发)
下一篇: c语言结构体(嵌入式开发)
Immerzu
博客等级 码龄7年 7粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值