Day2:c语言必须要掌握的内容

嵌入式学习Day2课后总结
今天是嵌入式学习第二天,相比昨天熟悉Linux操作写HelloWorld,今天学习的是C语言底层原理,内容量大且全是后续写驱动、单片机程序的核心根基,基础概念较多。
一、gcc四步编译流程(重中之重,嵌入式必懂)
1. 预处理 -E处理所有#开头代码:展开#include头文件、替换#define宏、解析条件编译#ifdef/#if等,生成.i文件,只做文本替换,无语法检查。
2. 编译 -S把C代码翻译成汇编指令,生成.s汇编文件,能直观看到C语言对应CPU底层指令。
3. 汇编 -c汇编代码转为二进制机器码,生成.o目标文件,此时还不能直接运行,缺少库、函数地址关联。
4. 链接(无参数)把多个目标文件、系统库整合,补全函数地址,生成可执行程序,就是我们./运行的二进制文件。
二、程序运行底层逻辑
代码文件存硬盘,执行时系统把二进制程序加载进内存,CPU读取内存数据运算;程序结束自动释放内存空间,理解这点才能看懂单片机内存分配、栈堆操作。
三、计算机存储单位&进制转换
1. 存储换算:1bit(位)=0/1;1Byte=8bit;1KB=1024B、1MB=1024KB、1GB=1024MB、1TB=1024GB2.
2. 四大进制:二/八/十/十六进制,嵌入式寄存器、地址全靠十六进制,转换规则记牢: - 转十进制:按位乘权值相加- 十进制转其他进制:除基取余,余数倒序- 二进制转八进制3位一组、转十六进制4位一组,写寄存器超常用 四、C语言基础数据类型(嵌入式选型关键) 1. 整型(内存占用、取值范围一定要背) - short:2字节,有符号-32768~32767 / 无符号0~65535- int:4字节,有符号±21亿区间 / 无符号0~42亿- long:8字节,64位整数,大数据、地址存储用⚠️ 有符号数最高位是符号位,负数以补码存储,底层硬件运算全靠补码!
2. 浮点型 - float 4字节:6~8位有效数字,简单小数运算- double 8字节:12~16位有效数字,高精度计算两者均自带符号位,内部分为符号、指数、尾数三段存储
3. char字符型(串口、LCD显示刚需) 1字节,依托ASCII码存储字符;unsigned char 0~255,signed char -128~127单个字符单引号’',字符串双引号"",末尾自带隐藏结束符\0,这点极易踩坑!
4. bool & void - bool:逻辑类型,非0为真true(1),0为假false(0)- void:空类型,用于无返回值函数、通用指针
五、常量与变量区分 常量(运行不可修改)
1. 整型常量:十进制、八进制(0开头)、十六进制(0x开头),后缀U/L区分无符号/长整型 2. 浮点常量:默认double,加f/F转为float,支持科学计数法e/E
2. 字符常量:单字符+转义字符(\n \t \0 \等)
3. 字符串常量:自带\0结尾,"a"≠’a’5. 宏常量#define:纯文本替换,定义数值替代魔鬼数字,表达式务必加括号防运算错误 变量 程序运行中数值可修改,是我们存储临时数据的载体,后续数组、指针全基于变量拓展。
今日学习感悟 第一天只是会用Linux命令、编译运行代码,今天才真正摸到嵌入式的底层逻辑!不管是单片机寄存器操作,还是后期Linux驱动开发,进制、数据类型、gcc编译流程都是绕不开的基础,很多踩坑点根源都是今天的知识点没吃透。接下来我要多手写进制转换、分步编译测试代码,巩固基础,稳步冲嵌入式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值