学习内容:
1、C语言概述
1.为什么选择嵌入式:因为嵌入式开发是在硬件上移植操作系统,由操作系统去控制资源给软件提供接口去控制硬件,可以提高软件的移植性
嵌入式开发中操作系统是核心,需要移植,并在上层和底层做开发,而操作系统的核心是内核,最重要的是内核,内核都是由C语言开发 ,所以嵌入式开发选择C语言
2、为什么用c语言开发--c语言的特点
a/能够直接访问硬件 (最大特点) (c:硬件复杂操作 VS 汇编:硬件初始化用汇编)
b/运行效率快 (运行时语言) 解释性语言VS运行时语言 (C VS java \ C (面向结构)VS C++(面向对象))
c/移植性
3、c语言的缺点:
面向结构(代码的复用性差、代码的维护性差、代码的扩张性差)
面向结构解决不了大而复杂的问题,解决具体、细微的问题
4、c语言实现面向对象编程????
如何用C语言实现面向对象编程:结构体如何实现类的封装、继承、多态
5、C语言的开发方向
操作系统(上层(库)、底层(BSP、驱动)、实现(内核))、硬件、中间件(sdk)
做内核、写操作系统
6、精通C、掌握C
C语言的知识体系
7、C语言发展
C语言基础知识点:
1、机器码(运行效率、访问硬件的能力)
C语言由指针类型
2、C语言之父:
丹尼斯里奇
3、C语言语法标准:
k&RC c89、c99 、c11
4、C语言语法版本:
GNU C +ASCL C
5、gcc:100%c89+部分c99
6、什么语言可能以后会替代c语言
Go和Rust
一数据类型:
基本数据类型:(内置:编译器自带的类型):int、short、long、long long、char、float、double
复合数据类型:(多个内置类型的组成的新类型):数组、struct、union、enum(后面讲)
void类型:void * (万能指针):多态
二、定义变量(注意事项:编码规范)
1\变量的可读性 : 形容性_名词 int n ;int sum_result ; int a ; int b ; int d;
2\循环变量: int i ; int k
三、基本数据类型需掌握的知识点:
1、各种数据类型的字节长度(变量占用内存的大小) int num =5;
注:计算机表示内存大小的单位:bit位、字节、半字、字、双字、kB、MB、G、T
8bit位= 1个字节、16bif= 2个字节=半字、32bit = 4个字节=字、双字、1024kB = 1MB、G、T
任何测量数据类型的大小? sizeof运算符不是函数 sizeof(变量名) sizeof(数据类型)
sizeof 计算数据类型和变量的内存大小
strlen统计字符串中字符的个数
指针的长度:int * ;char * 固定长度
指针类型:保存地址,操作系统中地址的长度是固定长度,是由操作系统位数的决定的,64位系统是8个字节,32位系统是4个字节
数组的长度
数组的长度 * 元素类型的长度 int array-int[100] 4*100 .
字符串的长度: int strlen(char *src) 不统计‘\o’
char *ptr = "hello world";
printf("strlen(ptr) = %ld\n",sizeof(ptr)); 测量的是ptr指针变量的大小
printf("strlen(ptr) = %ld\n",strlen(ptr)); 结果 是 11
输出结果: 8,11,11
笔试题
2、各种数据类型的取值范围?
(计算机是以补码形式保存数据,为了解决+0,-0问题)
注:大数计算
计算机为什么提出补码存储?
3、signed VS unsigne: 代码移植性问题
typedef 关键词:给数据类型重命名
作用:解决signed、unsigned带来的代码移植性的问题
提高代码的可读性
提高编码效率
4、变量和常量
全局变量和局部变量
1.变量的三大特点:字节长度、生命周期&作用域、存储区域
2、作用域:可见范围
局部变量:在函数体里定义的变量--所在函数(出了函数看不见)
全局变量:在函数体外定义的变量--整个全局(需要用extern外部声明)
3、生命周期:所在内存空间的分配-释放的过程
局部变量:所在函数体执行时,分配空间,执行结束,释放空间
全局变量:所在程序执行时,分配空间,执行结束,释放空间
4、存储区域
局部变量:存储在栈空间
全局变量:存储在数据段