首页 > 分享 > 你们的电子宠物之勇闯嵌入式(c语言第一天笔记持续更新版,欢迎讨论)

你们的电子宠物之勇闯嵌入式(c语言第一天笔记持续更新版,欢迎讨论)

你们的电子宠物之勇闯嵌入式(笔记持续更新版,欢迎讨论) 计算机语言 机器语言:二进制0和1构成汇编语言:充当翻译高级语言:C/C++,java,Python,PHP,c# 计算机的工作原理 存储程序程序控制 c语言的程序的开发过程

开发三步骤

编辑:程序员向.c文件写入程序编译:将源文件(.c)编译成可执行文件(二进制)运行:运行可执行文件

编译过程分为四个步骤

预处理编译汇编链接 ⼀个简单的C语⾔程序

功能:在屏幕上显示一行文字:“Hello World!”源程序运行结果

源程序

/*在屏幕上显示hello World!*/ #include<stdio.h> int mian(void) { printf("Hello World!n"); return 0; } 1234567 程序结构分析 注释部分 以增强程序的可读性不被执行 预处理命令 程序中包含某一文件内容“stdio.h”为标准的输入输出函数头文件名。 主函数 C程序由函数组成。一个C程序有且只有一个主函数(main函数)。 函数首部(函数头)/函数说明 说明函数类型、函数名和函数参数。 函数体 包括变量说明和语句执行部分。 函数调用语句 格式输出函数printf()。输出“Hello World!”。 C语言编码规范要求

C语言在编码的时候,需要遵循如下规范:

常⽤缩进书写格式(⼀般缩进2或4个字符)

有⾜够的注释(添加必要的注释,使代码更好理解)

有合适的空⾏(⼀般预处理命令和函数、全局变量和函数、函数和函数之间要有空⾏,使代码结构更清 晰)

{}对⻬(C和C++中 { 和 } 都需要独占⼀⾏)

函数体内采⽤分层缩进和模块化的书写⽅式

不把多条语句写在程序的同⼀⾏上

命名:变量或函数命名要尽可能包含更多含义,但不能太⻓,可采⽤ _ 和缩写来命名。

C语言中的注释

在C语言中,注释一般分为两类, 单行注释和 多行注释。

注释的作用:给代码添加解释说明性文字,提升代码的可读性,注释本身是不会被执行的。同时也可以使用注 释屏蔽掉代码。

单行注释

说明:单行注释使用双斜杠 //… 表示。我们一般用于常量、变量、函数调用等。

// 打印信息到控制台 printf("hello world!"); 12 多行注释

单行注释使用斜杠星号 /**/表示。他可以占用多行代码,但不能嵌套。一般用于函数,文件头说明。

/* 要注释 的代码 */ 1234 C 语⾔程序的设计特点

C语言程序在设计的时候,需要注意如下细节规范:

⼀个C程序由⼀个或多个函数组成,但有且仅有⼀个主函数 (main函数);main函数是程序执⾏的⼊⼝,可 置于程序的任何位置。程序中可以有预处理命令(如:include 命令,define命令)。预处理命令通常放在 程序的最前⾯。每个语句以分号结尾;预处理命令、函数头和花括号“}”之后不能 加分号。函数体由⼀对花括号“{ }”括起来。括在/…/内的⽂本为注释。⼀⾏可以写⼏个语句,⼀个语句也可以写在多⾏上。程序区分⼤⼩写字⺟。⼀般变量、语句等⽤⼩写字⺟书写;符号常量、 宏名等⽤⼤写字⺟书写。标识符和保留字之间须加空格以⽰分隔。 C语言在Linux系统中进行预处理

# C语言 编译型语言:通过编译器编译源代码文件生成机器能够识别可执行文件/二进制 # 命令格式: # 缺省状态:编译器名字 源代码文件名字 # 编译器名字 源代码文件名字 指定参数 生成的程序文件名字 # 编译器名字 gcc,arm-linux-gcc, arm-none-linux-gnueabi # 可通过 gcc -v 查看编译器是否存在 # 源代码文件名字:后缀:.c # 参数 -o 指定即将要生成的程序文件名字,就是当前参数后面的这个参数 hello # 用户指定的生成的程序文件名字 gec@ubuntu:~$ gcc hello.c -o hello gec@ubuntu:~$ gcc hello.c --会默认生成 Linux 可执行程序 a.out Windows a.exe 123456789101112

另外,可以通过构建工具(make),直接选择依赖条件/规则来编译

# 假设有 hello.c 文件,如果想要使用构建工具进行编译,安装构建工具 sudo apt install make # 1. 编译(make 后面的参数是用来指定从当前查找以用户指定的这个名字前缀的c源代码文件) make hello 1234 执行

# 程序的路径/程序的名字 # . 当前路径上找一个即将要执行的程序 # / 路径拼接符 ./hello ./hello.exe # 后缀不能少,因为Windows就是以后缀来区分文件类型 123456 编译过程做了什么事情

检查语法 编译之后的表现: 1)编译通过 编译之后没有任何提示,说明 编译完美通过,生成一个可执行程序。 2)编译警告 编译之后会出现warning提示,还是可以生成一个可执行程序。比如头文件 没写 警告虽然不代表出错,有些警告可以忽略,但是有些警告不能忽略 3)编译出错 语法出错,会有一个明显的提示error,根据提示出错的信息找到问题所在 123456789 注意问题

如果使用缺省参数进行编译,则要明确,运行时的程序是(Linux:a.out/Window:a.exe),但如果使用指定参数进行编译,则必须明确的程序名字是 -o 参数后面程序文件名字。

gcc hello.c -o hello a.exe hello ./hello gcc hello.c //第二次修改代码后 ./hello 12345 数据类型 定义

数据类型其实是固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和操作数据。

数据:计算机要处理的数据(数字、字符串、文字、符号、图片、音频、视频等)。

注意: 了解数据类型的内存需求是理解计算机管理和操作数据的关键 程序的运行需要用到内存。 123 内存存储容量单位

字节(byte):计算机存储容量的一种单位,一般应用层最小存储单元的表示。

比特位(bit):二进制数(0和1)计算机是以二进制的方式进行存储的,我们应用层可以通过位运算进行位的 操作。

1个字节(BYTE) = 8 位(BIT)

1KB = 1024BYTE

1MB = 1024KB

1GB = 1024MB

1TG = 1024GB

数据类型分类和计算方法 数据类型分类 数据类型在内存中的大小 序号数据类型中文说明大小(字节)1short短整型22int整形43long(long int)长整型4(32位编译器)/8(64位编译器)4long long(long long int)长长整形85float单精度浮点型46double双精度浮点型87char字符型18bool(_Bool)布尔型,真—true,假—falsebool:1 ,true :4, false:4;

注意:因为C语言没有Byte这个单位,一般用char来表示字节,1个char==1个Byte 1

获取某个数据类型或者变量所占的字节数 → sizeof(某个数据类型或者变量名) printf("true size:%dn",sizeof(true)); // true size:4 占4个字节,boolean底层是0和非0 printf("false size:%dn",sizeof(false));// false size:4 占4个字节 printf("bool size:%dn",sizeof(bool));// bool size:1 占1个字节 总结: 1.数据类型在内存中所占的字节数跟C语言的编译系统有关。 2.计算某个数据类型所占的字节数可以用sizeof。 3.布尔类型要添加#include<stdbool.h>,也可使用int 类型的0表示假,非0表示真。 12345678 常量与变量

在C语言中,数据的基本变现形式是常量和变量。不管是常量还是变量,都是需要在内存中开辟一块空间,用于数据的存放。

常量 定义:在程序执行过程中其值不能被改变的量。分类:int、float、double、char和符号常量。 整形常量

整型常量可⽤⼗进制、⼋进制、⼗六进制三种形式表⽰。

⼗进制整型常量:由0~9的数字组成,没有前缀,不能以0开头(⽐如:0是可以的,但是09是不可以 的)。

⼋进制整型常量:以 0 为前缀,其后由0~7的数字组成,没有⼩数部分。(⽐如:023)

⼗六进制整型常量:以 0x或者 0X为前缀,其后由 0~9 的数字和*A~F(大小写均可)*字母组成,没有小数部分。(⽐如:0x00FF0000)

注意:整型常量中的⻓整型数据可⽤ L 作为后缀,(⽐如:123L)。

整型常量的分类

有符号与⽆符号基本整型常量有符号与⽆符号⻓整型常量有符号与⽆符号短整型常量

整型常量的表⽰

⼗进制表⽰:可以使⽤10个数字符号0~9以及+,-,如: 123,-456⼋进制表⽰:以0开头,可以使⽤7个数字符号0~7以及+,-,如: 0123,-011⼗六进制:以0x开头,符号有 0~9 ,AF(af) ,如:0x12,-0x11

浮点型常量

​ C语言中的浮点数就是平常所说的实数,有两种表现形式:

⼗进制⼩数形式:如:0.123,-17.8指数形式(科学记数法),如:1230.0可以表⽰为1.23e3或者1.23E3

注意: ① 在符号e的前⾯必须要有数字。 ② 在符号e的后⾯必须为整数,不能是带有⼩数点的实数型。实型常量的后缀⽤F(或f)表⽰单精度型。 后缀⽤L(或l)表⽰双精度型。 1234 字符常量

用单引号’‘括起来的一个字符,如:‘a’、‘A’,’_'等,比如:'霍’就不是字符,一个汉字所占的字节数超过了1 个。中文符号当成汉字理解。 英文输入法下输入的字母、数字、符号都是单字符。

转义字符常量:以反斜杠 ‘’ 开头的字符序列,表示控制及不可见的字符,如:

序号字符形式含义ASCII码n换行10r回车13空字符0t水平制表9 字符串常量

说明:在C语言中,是支持字符串常量的,但是不支持字符串变量,字符串变量需要使用字符数组或者字符指针实现。

⽤⼀对双引号 “” 括起来的⼀个字符序列,如:How do you do?,China,12,true,12.25等。

注意: 字符串常量a与字符常量a的区别:

系统⾃动为字符串常量加上结尾的,使所占内存单元多⼀个,单字符常量的⻓度不变,可⽤sizeof()运 算符来测量。

1中文字符 = 2英文字符,中文字符在内存中的实际占用空间 = 2个数据字节 + 空位字节() = 3个字节。

符号常量

定义一个标识符来代表一个常量。

如:⽤PI代表圆周率π,即:3.1415926 好处: 增加可读性增强了可维护性 定义符号常量: ⽤编译预处理命令 #define(宏定义)

#define 标识符 字符串 1 标识符和字符串之间⽤空格隔开句末不⽤分号表⽰符的命名采⽤⼤写,如果有多个单词,使⽤下划线分隔,举例:MAX_VAL,MIN_VAL,AVG;

注意:符号常量不占内存单元。

1中文字符 = 2英文字符,中文字符在内存中的实际占用空间 = 2个数据字节 + 空位字节() = 3个字节。

符号常量

定义一个标识符来代表一个常量。

如:⽤PI代表圆周率π,即:3.1415926 好处: 增加可读性增强了可维护性 定义符号常量: ⽤编译预处理命令 #define(宏定义)

#define 标识符 字符串 1 标识符和字符串之间⽤空格隔开句末不⽤分号表⽰符的命名采⽤⼤写,如果有多个单词,使⽤下划线分隔,举例:MAX_VAL,MIN_VAL,AVG;

注意:符号常量不占内存单元。

相关知识

C语言打造即用型嵌入式宠物喂食机源码详解
勇闯女巫塔宠物怎么选择培养
基于嵌入式与物联网的智能电子宠物的设计
勇闯女巫塔宠物怎么选择培养,萌宠成长全纪录:实用养育技巧大公开
C语言在线编译器助力文字转换为高效代码,快速实现编程梦想
炫舞如何玩多宠勇闯重楼及宠物饰品强化
Tamaguino:重温经典,Arduino上的电子宠物
“电子宠物蛋”玩具20年后出新版:造型呆萌可爱
看过发抖的老鹰吗?栗翅鹰波波勇闯宠物展
C语言 电子汪

网址: 你们的电子宠物之勇闯嵌入式(c语言第一天笔记持续更新版,欢迎讨论) https://m.mcbbbk.com/newsview878447.html

所属分类:萌宠日常
上一篇: 宠物店微商城,宠物店都在使用的微
下一篇: 我家的宠物超级勇