C语言
计算机的组成(预备知识)
计算机组成
-
计算机:能进行计算和逻辑的设备
-
硬件:组成计算机的各种物理部件(鼠标,键盘)【硬件=电子设备+单片机编程+集成电路+嵌入式系统】
-
软件:计算机中运行的程序和数据【软件=系统软件+应用软件+编程语言+算法和数据结构】
计算机的六大部件
- 中央处理器(CPU)
- 内存
- 输入设备
- 输出设备
- 外存储器
- 网路
计算机的工作原理
- 存储程序
- 程序控制
计算机语言
- 机器语言:二进制0和1构成
- 汇编语言:充当翻译
- 高级语言:C/C++,JAVA,Pytnon,PHP,C#
C语言的简史与特点
嵌入式开发就是针对Linux系统的开发,而Linux系统使用C语言开发的,所以从事嵌入式开发要使用C语言
C语言程序的开发过程
* 编辑:程序员向.c文件写入程序
* 编译:将源文件(.c)编译成可执行程序(二进制)
* 运行:运行可执行程序
C语言程序的编译过程
- 预处理
- 编译
- 汇编
- 链接
一个简单的C语言程序
功能:要求在控制台上输出“hello world”
代码:
/*************************************************************************
> File Name: demo01.c
> Author: 冯鹏飞
> Description: C语言程序的基本结构
> Created Time: 2024年11月25日 星期一 10时51分25秒
************************************************************************/
// 引入系统库(系统的标准输入输出库,如:scanf(),printf())
#include <stdio.h>
// 入口函数:每一个.c文件有且仅有一个入口函数
// C语言中入口函数的返回值和参数列表比较灵活,唯一的要求:函数名必须是main
int main(int argc,char *argv[])
{
// 向控制台输出hello world!
printf("hello world!\n");// 一行代码执行结束,使用“;”表示结束
return 0;
}
程序结构分析:
- 注释:代码中起到解释说明的文字(提高代码的可读性),或对代码进行屏蔽,不会被执行
- 预处理命令:程序中包含的某一文件内容
- 主函数:C程序的如口函数,一个C文件有且仅有一个主函数(main函数)
- 函数头/函数说明:说明函数类型,函数名和函数参数,举例:int main()
- 函数体:包括变量说明和语句执行部分
- 函数调用语句:比如格式输出函数,举例:printf()
C语言书写格式
C语言在编码的时候,需要遵循如下规范:
* 常用缩进书写格式(一般缩进2~4个字符)
* 有足够的注释(添加必要的注释,使代码更好理解)
* 有合适的空行(一般预处理命令和函数,全局变量和函数,函数和函数之间)使代码结构更清晰
* {}对齐并独占一行
* 函数体内采用分层缩进和模块化的书写方式
* 不把多条语句写在程序的同一行上
* 命名:变量或者函数命名要尽量包含更多含义,但不能太长
C语言程序的设计特点
- C程序有一个或多个函数组成,但有且仅有一个主函数(main函数);main函数是程序执行的入口,可至于任意位置
- 程序中可以有预处理命令(#include)预处理命令通常在程序最前边
- 每个语句以分号结尾;预处理命令,函数头,和{}之后不加分号
- 函数体由一对{}括起来
- 包含在/…/内文本为注释
- 一行内可以写几个语句,一个语句也可以写多行
- 程序区分大小写字母。一般变量,语句用小写;符号变量,宏名用大写
- 标识符和保留字之间必须加空格分割
C语言中的注释
在C语言中,注释分为单行和多行注释
##### 单行注释
用//双斜杠表示,用于常量,变量,函数调用等的定义
多行注释
使用/*…*****/表示,它可以占用多行代码但不能嵌套,一般用于函数文件头说明
注意:由多行注释衍生出一种更为细致的注释称之为文档注释
数据类型
定义
数据类型其实使固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和草主数据。
数据:计算机要处理的的数据(数字,字符串,文字,符号,图片,音频,视频等)
- 数据类型不仅帮助我们组织和操作数据,还决定了程序如何有效地利用内存
- 了解数据类型的内存需求是理解计算机管理和操作数据的关键
注意:简单来讲,程序的运行需要用到内存
内存存储单位
- 比特(btye):计算机存储容量的一种单位,一般应用层最小存储单元的表示
- 比特位(bit):计算机是以二进制数的方式进行存储的,应用层可以通过位运算进行位的操作
1个字节(byte)=8位(bit)
数据类型分类和计算方法
数据类型在内存中的大小
序号 | 数据类型 | 中文说明 | 大小(字节) |
---|---|---|---|
1 | short | 短整形 | 2 |
2 | int | 基本整形 | 4 |
3 | long(long int) | 长整型 | 4(32位编译器)/8(64位编译器) |
4 | long long(long long int) | 长长整型 | 8 |
5 | float | 单精度浮点型 | 4 |
6 | double | 双精度浮点型 | 8 |
7 | char | 字符型 | 1 |
8 | bool | 布尔型,真–true,假–false | 1 |
注意:因为C语言没有byte这个单位,所以我们一般使用char来表示字节,因为1个char==1个byte
获取某个数据类型或者变量所占的字节数-->sizeof(某个数据类型或者变量名)
总结:①直接联系在内存中所占的字节数跟C语言的编译系统有关
②计算某个数据类型所占的字节数可以用sizeof
③布尔类型要添加#include <stdbool.h>,大家也可以使用int类型的0表示假,非0表示真
常量与变量
在C语言重,数剧的基本表现形式是常量和变量。不管是常量还是变量,都是需要在内存开辟一块空间,用于数据的存放
常量
定义:在程序执行过程中其值不能改变的量
分类:int,float,char和符号常量
- 整型常量(int):
①整型常量可用十进制,八进制,十六进制三种形式表示。
②整型常量中的长整型数据可用L最为后缀
- 整型常量的分类
①有符号和无符号基本整型常量(-128~127)
②有符号和无符号长整型常量
③有符号和无符号长整型常量
浮点型常量
C语言中的浮点数就是平常所说的常数,有两种表现形式:
①十进制小数形式:0.123,-17.8
②指数形式:123.0=1.23E3
注意:
①在符号E前必须要有数字
②在符号E的后面必须为数字
③实型常量后缀用F/f表示,双精度型用L/l表示
字符常量
用单引号’ ‘括起来的字符。
转义字符常量 :以反斜杠’\‘开头的字符序列,表示控制及不可见的字符,如:
序号 | 字符形式 | 含义 | ASCII码 |
---|---|---|---|
1 | \n | 换行 | 10 |
2 | \r | 回车 | 13 |
3 | \0 | 空字符 | 0 |
4 | \t | 水平制表 | 9 |
字符串常量
说明:在C语言中是支持字符串常量的,但不支持字符串变量,字符串变量需要使用字符数组或者字符指针实现
- 用一对双括号“ ”括起来的字符序列
- 可以输出一个字符序列
注意:字符串常量“a”与字符常量’a‘区别
系统自动为字符串常量加上结尾的"\0”,使所占内存单元多一个,单字符常量的长度不变,可用sizeof()运算符来测量。
1h duiahs中文字符= 2英文字符,中文字符在内存中的实际占用空间=2个数据字节+空位字节(\0)=3个字节。
符号常量
定义一个标识符来代表一个常量
好处:
- 增加可读性
- 增强可维护性
定义符号常量:
-
用编译预处理命令(#define宏定义)
#define 标识符 字符串
-
标识符和字符串之间用空格隔开
-
句末不用分号
片转存中…(img-jMtV8rAL-1732527858527)]
1h duiahs中文字符= 2英文字符,中文字符在内存中的实际占用空间=2个数据字节+空位字节(\0)=3个字节。
符号常量
定义一个标识符来代表一个常量
好处:
- 增加可读性
- 增强可维护性
定义符号常量:
-
用编译预处理命令(#define宏定义)
#define 标识符 字符串
-
标识符和字符串之间用空格隔开
-
句末不用分号
-
标识符的命名用大写,若有多个单词,则用下划线_分隔