基础:
1 负数>> ,符号位跟着移动,最高位补1,左移和右移的位数不能大于数据
的长度,不能小于 0
2 volative 和const一样是 类型修饰符,用它修饰的变量可以被某些未知因素修改,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再优化。
3 关键字struct,将相关联的数据打包成一个整体。
柔性数组a[],常用于c99.
4 union关键字所有成员共用一个起始地址,最大长度为double形态。
5 编译器处理注释是用空格代替
6 char 取值范围:-128~127.原因: char 为8bit. 最高位为1 为负1--- ---- ,故128 只能为负,正数max 127
c语言10进制,16进制,2进制,char,均是以不同的形式存在,无需转换。
7 指针如果不指向栈区,便须申请空间指向堆区
8 段错误:
1.指针改变常量(字符串常量)
2.空指针,对0地址空间NULL进行操作
3.野指针,对野指针进行操作
4.对数组名进行修改
5.数组越界
/*小术 能休息 万事--缘 慢细---轻快--- 虚无载--公鸡---身-心--生机 不修明,若来声 打算 迷蒙 */
进阶:
1 c++与java均是面向对象类语言数据类型与C中不一样的地方:
1、int 类型的字节数 永远都是4个字节。
2、类型严格 ( if )
3、任意一个浮点值,java都会默认为 double 类型,所以定义 float 类型的时候要加 f/F;
4 申请空间用new(),删除delete(),c为malloc,free
2 tcp流数据类型,udp数据报。(tcp,udp 区别在于可靠,有序,准确性).
tcp server:socket创建,绑定,listen,accept,receive
3 系统移植:包括 文件系统移植,内核裁剪移植,uboot移植
uboot启动流程:设置异常相量表,关中断,看门狗,mmu.初始化串口时钟,初始化栈,清bss段,重定位
4 驱动要点 platformdriver .name
5 i2c,spi.uart:
传输速度:spi>i2c>uart
全双工:spi,uart 半双工:i2c
同步:spi,i2c,异步 uart
器件之间:spi,i2c 设备之间:uart
地址选择:spi:cs i2c:主机发送地址判定
6 i2c_eeprom,spi_flash, dht11,mpu6050,dma