嵌入式学习第二篇——c语言基础1

发布时间:2024年01月17日

C语言基础:

? ? 1.基础:

?? ? ? 1.基本数据类型、运算符、表达式

? ? ? ?2.常用的输入输出函数

? ? ? ?3.流程控制

? ? 2.重点知识:

? ? ? ?1.数组

? ? ? ?2.函数

? ? ? ?3.指针

? ?3.难点知识:

? ? ? 1.构造数据类型

? ? ? ?2.链表

? ? ???3.内存管理

=========================================================================

基础一——基本数据类型
1.进制转换:
? ? 二进制、八进制、十进制、十六进制

? ? 二进制:0 1
? ? 八进制:0 1 2 3 4 5 6 7?
? ? 十进制:0 1 2 3 4 5 6 7 8 9
? ? 十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f?

? ? 二进制、八进制、十六进制 -> 十进制?
? ? ? ? 对应位 * 对应位的权值再求和

? ? 123 == 1 * 100 + 2 * 10 + 3 * 1
? ? ? ? == 123?

? ? 1001 1110 -> 158

? ? 17 ?-> 15
? ? 1af -> 15 + 160 + 256
? ? ? ? -> 431?

? ? 十进制 -> 二进制、八进制、十六进制
? ? ? ? 十进制数除以进制数得到的余数逆序排列

? ? 二进制 八进制 十六进制:
? ? 八进制1位对应二进制3位
? ? 十六进制1位对应二进制4位

2.程序如何在C语言中被运行起来?
? ? 程序(外存中)
? ? 执行(加载到内存中)
? ? 程序运行结束(回收内存空间)

3.数字在内存中的存储:
? ? 正数在计算机中存放对应的二进制数
? ? 负数在计算机中存放补码
? ? ? ? 1.原码? 1010101
? ? ? ? 2.反码? 0101010
? ? ? ? 3.补码? 0101011
? ? ? ? 4.内存数据? ?符号位+0101011

4.gcc编译的流程步骤:
? ? gcc filename.c?

? ? 1.预处理
? ? ? ? 处理和#号相关代码

? ? ? ? 1.头文件展开
? ? ? ? #include?
? ? ? ? 2.宏定义替换
? ? ? ? #define ?M ? ?100 ?
? ? ? ? 3.条件编译
? ? ? ? #if #elif #else #endif #ifndef #ifdef?

? ? ? ? gcc -E filename.c -o filename.i?

? ? 2.编译
? ? ? ? 将C语言程序编译成汇编代码

? ? ? ? gcc -S filename.c -o filename.s?

? ? 3.汇编
? ? ? ? 将汇编代码编译成二进制代码

? ? ? ? gcc -c filename.c -o filename.o?

? ? 4.链接?
? ? ? ? 将多个二进制代码链接成为一个可执行程序

? ? ? ? gcc filename.c -o filename?

=================================================================================================================================
1.基本数据类型、运算符、表达式
? ? 1.数据类型分类
? ? ? ? 1.基本数据类型:
? ? ? ? ? ? 整形数据 short int long?
? ? ? ? ? ? ? ? ? ? short (signed short)
? ? ? ? ? ? ? ? ? ? ? ? ? unsigned short?
? ? ? ? ? ? ? ? ? ? int ? (signed int)
? ? ? ? ? ? ? ? ? ? ? ? ? unsigned int?
? ? ? ? ? ? ? ? ? ? long ?(signed long)
? ? ? ? ? ? ? ? ? ? ? ? ? unsigned long?

? ? ? ? ? ? 浮点型数据 float double?
? ? ? ? ? ? 字符型 char
? ? ? ? ? ? 逻辑类型(泊尔类型) bool?
? ? ? ? ? ? 缺省类型(void)
? ? ? ??
? ? ? ? 2.构造数据类型
? ? ? ? ? ? 结构体
? ? ? ? ? ? 共用体
? ? ? ? ? ? 枚举类型

? ? 3.基本数据类型
? ? ? ? 1.整数类型:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 名称 ? ? ? ? ? ? ?占内存空间? ? ? ? ? ? ? ? 值域范围? ? ? ? ? ? ? ? ? ?? ?存储方式
? ? ? ? ? ? short:? ? ? ? ? ? ? 短整形 ? ? ? ? ? ??2个字节空间 ? ? ? ? -32768 - 32767? ? ? ? ? ? ? ? ? 补码
? ? unsigned short:? ?无符号短整型 ? ?? 2个字节空间? ? ? ? ? ? ?0 - 65535 ? ? ? ? ? ? ? 对应的二进制数
? ? ? ? ? ? int:? ? ? ? ? ? ? ? ? ?整形 ? ? ? ? ? ? ? ?4个字节空间 ? ? ? ? -21亿 - 21亿? ? ? ? ? ? ? ? ? ? ? 补码
? ? ? ?unsigned int:? ? ? 无符号整形 ? ? ? ?4个字节空间? ? ? ? ? ? ? 0 - 42亿 ? ? ? ? ? ? ? ?对应的二进制数
? ? ? ??? long:? ? ? ? ? ? ? ? 长整型 ? ? ? ? ? ? ? 8个字节空间 ? ? ? ? -2^63 - 2^63 -1? ? ? ? ? ? ? ? ?补码
? ? ??unsigned long:? ?无符号长整型 ? ? ?8个字节空间? ? ? ? ? ? ?0 - 2^64 ? ? ? ? ? ? ? ?对应的二进制数

? ? ? ? ? ? 练习:
? ? ? ? ? ? ? ? 编写程序测试数据类型所占字节数:
? ? ? ? ? ? ? ? ? ? short ? 2
? ? ? ? ? ? ? ? ? ? int ? ? 4
? ? ? ? ? ? ? ? ? ? long ? ?8
? ? ? ? ? ? ? ? ? ? float ? 4
? ? ? ? ? ? ? ? ? ? double ?8
? ? ? ? ? ? ? ? ? ? char ? ?1
? ? ? ? ? ? ? ? ? ? void ? ?1

例:


? ? ? ? ?
? ? ? ? 2.浮点数类型:
? ? ? ? ? ? float?
? ? ? ? ? ? double?
? ? ? ? ? ? 3.1415926?
? ? ? ? ? ? 5.12?
? ? ? ? ? ? 所有的浮点数类型均为有符号类型,没有无符号类型的概念

? ? ? ? ? ? ? ? ? ? ? 名称 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?占内存空间大小? ? ? ? ? ? ? ? 值域范围 ? ? ? ? ? ? ? ? ? ? ? ?

float ? 单精度浮点数类型(最多表示6-8位有效数字) ? ? 4个字节 ? ? ? ? -3.4*10^38 - 1.18*10^-38? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.18*16^-38 - 3.4*10^38

? ?储存方法:1位符号位 + 8位指数位 + 23位尾数位
double ?双精度浮点数类型(最多表示12-14位有效数字) ? 8个字节 ? ? -1.80*10^308 - 2.23*10^-308? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.23*10^-308 - 1.80*10^308

储存方法;1位符号位 + 11位指数位 + 52位尾数位

? ? IEEE754 :

*******浮点数 -> 二进制形式 -> 科学计数法转换 -> 小数点后存入尾数位中 -> 指数位+偏移数(float:127 double:1023)以二进制形式存入指数位中?
******和整数存储方式完全不同

? ? ? ? 3.字符型:
? ? ? ? ? ? char?
? ? ? ? ? ? a .. z
? ? ? ? ? ? A .. Z?
? ? ? ? ? ? # ? ..?

? ? ? ? ? ? ASCII码表:
? ? ? ? ? ? 字符和数字的对应关系

? ? ? ? ? ? a -> 97?

? ? ? ? ? ? 名称 ? ? ?? 内存空间大小 ? ? ? ? 值域范围 ? ? ? ? ? ?存储方式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?unsigned char? ? ? ? 1个字节 ? ? ? ? ? ?? 0 - 255 ? ? ?? 存储字符在ASCII码表中对应数字的二进制形式?
?signed char? ? ? ? ? ? 1个字节 ? ? ? ? ? ??-128 - 127? ? ? ? ? ? ?同上

? ? ? ? 4.逻辑类型:
? ? ? ? ? ? bool?

? ? ? ? ? ? 名称 ? ? ? ? ? ? ? ?内存空间大小 ? ? ? ? ? ?值域范围 ? ? ? ? ? ? ? 存储方式?
? ? ? ? ? ? 泊尔类型 bool ? ? ? 1个字节 ? ? ? ? ? ? ? ? true? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? false? ? ? ? ? ? ? ? ? ? ?? ?0

? ? ? ? ? ? 在C语言中所有的非0值均为逻辑真值
? ? ? ? ? ? 在C语言中所有的0值为逻辑假值

? ? ? ? 5.缺省类型:
? ? ? ? ? ? void?

? ? ? ? ? ? 搭配函数和指针使用

? ? ? ? ? ? void a;

2.常量和变量:
? ? ? ? 1.常量: 在程序运行过程中值不允许发生改变的量
? ? ? ? 2.变量: 在程序运行过程中值可以发生改变的量
? ? ? ? 3.表达式:由一个或者多个运算符连接的变量常量组成的式子

? ? 1.整形常量:
? ? ? ? 默认为int类型

? ? ? ? 100 ? ? ? ? int类型
? ? ? ? 100l ? ? ? ?long类型
? ? ? ? 100u ? ? ? ?unsigned int类型?
? ? ? ? 100ul ? ? ? unsigned long类型
? ? ? ? 100L?
? ? ? ? 100U?
? ? ? ? 100UL?

? ? ? ? 0123 ? ? ? ?八进制常量
? ? ? ? 0x1a ? ? ? ?十六进制常量
? ? ? ? 0X1A

? ? 2.整形变量:
? ? ? ? 1.变量要先定义再使用
? ? ? ? ? ? 1.变量定义的形式
? ? ? ? ? ? ? ? 数据类型 变量名;

? ? ? ? ? ? ? ? 1.变量名可以由字母、数字、下划线构成不能以数字开头
? ? ? ? ? ? ? ? 2.变量名不能与C语言关键字重名
? ? ? ? ? ? ? ? 3.变量名最好不要与库函数重名
? ? ? ? ? ? ? ? 4.变量名最好是见名知意?
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? 驼峰法:
? ? ? ? ? ? ? ? ? ? int TempNum;
? ? ? ? ? ? ? ? ? ? int MaxCnt;
? ? ? ? ? ? ? ? ? ? int MinNum;
? ? ? ? ? ? ? ? ? ? int AvgScore;

? ? ? ? ? ? ? ? ? ? 内核法:
? ? ? ? ? ? ? ? ? ? int temp_num;
? ? ? ? ? ? ? ? ? ? int max_cnt;
? ? ? ? ? ? ? ? ? ? int min_cnt;
? ? ? ? ? ? ? ? ? ? int avg_score;

? ? ? ? 2.变量拥有存储空间,也有值域范围

? ? 3. 浮点型常量:
? ? ? ? 默认为double类型?

? ? ? ? 3.1415 ? ? ? ? ?double类型
? ? ? ? 3.1415f ? ? ? ? float类型?
? ? ? ? 3.1415e8
? ? ? ? 3.1415e-8
? ? ? ? 3.1415E8
? ? ? ? 3.1414E-8?

? ? 4. 浮点型变量
? ? ? ? double d;
? ? ? ? float f;

? ? 5.字符型常量:
? ? ? ? 'a' 'A'
? ? ? ? 'z' 'Z'
? ? ? ? '?' '#'
? ? ? ? '~' ' '
? ? ? ? '\'' : '号
? ? ? ? '\n' : 换行符
? ? ? ? '\t' : 横向制表符
? ? ? ? '\v' : 纵向制表符
? ? ? ? '\r' : 回车符
? ? ? ? '\b' : 退格符
? ? ? ? '\\' : \符?
? ? ? ? '0'
? ? ? ? '1' ?: 字符1?
? ? ? ? '2' ?
? ? ? ? '3'
? ? ? ? '4'
? ? ? ? '5'
? ? ? ? '6'
? ? ? ? '7'
? ? ? ? '8'
? ? ? ? '9'?
? ? ? ? '\0' : 字符\0

? ? ? ? '1' -> ASCII码表 -> 49 ? ? ?
? ? ? ? 1 ? : 1

? ? ? ? '0' ?: 48?
? ? ? ? 0 ? ?: 0
? ? ? ? '\0' : ASCII码值为0 用来标识字符串的结尾

? ? ? ? '\123' : 八进制123对应的字符
? ? ? ? '\x32' : 十六进制32对应的字符 ?

? ? 6.字符型变量:
? ? ? ? char ch;

? ? 7.字符串常量

? ? 8.标识常量

作业:
? ? 1.课后习题3.3?


? ? 2.课后习题3.7?

3.3

(1)12,A(2)40,20(3)113,4B(4)-1151,-269(5)-157,-6F(6)-4463,-B1B

(7)-67756,-6FEE(8)-51013,-520B

3.7

文章来源:https://blog.csdn.net/qq_32710641/article/details/135631846
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。