嵌入式C语言基础(一)
C 有32个关键字、9种控制语句、34种运算符、8种数据类型。
一、典型代码分析
- 1、C语言中包含头文件有两个符号“”和<>,双引号“”时编译器首先在当前目录下搜索需要包含的头文件,如果当前目录下无该文件,则在编译选项指定的系统头文件目录中搜索该文件;尖括号<>时编译器在系统头文件目录中搜索需要包含的文件。
- 2、第6行定义一个大数组时,需采用static的方法定义。
- 3、第9行会因第5行定义的数据类型问题,导致死循环。
- 4、第9行for循环中表达式错误,因C语言中数组的下标是从0开始的。
- 5、第12行,编程风格不规范,将返回值赋给其他类型的指针变量前进行显示的强制类型转换,即“p = (char *) malloc(1024)”.
- 6、第14行,同第12行。
- 7、第15行if条件判断表达式错误,“==”与“=”的区别,为防止该错误一般把常量写在“==”的左端。
- 8、第15行除条件表达式错误外,如果动态内存申请失败,return前要把本函数内之前动态申请的释放掉,否则造成“内存泄漏”。
- 9、第17行,调用memcpy()函数时为了提高效率不对入口参数ptr进行合法性检查,但如果ptr为空时,运行系统就崩溃。
- 10、第20行,在C语言程序编译时,编译器为数组所在内存分配空间,因此C中无动态数组的概念,在编译时存储位置已确定,在程序运行中不再改变。
- 11、第26行返回语句错误,因函数内部变量是通过堆栈存放的,将堆栈中的地址作为指针传递到函数外部是很危险的,出函数后,该函数的堆栈已无效。
二、C语言的关键字
一共32个关键字,可分4组:
数据类型关键字(12个):char、double、enum、float、int、long、short、signed、struct、union、unsigned、void
控制语句关键字(12个):break、case、continue、default、do、else、for、goto、if、return、switch、while
存储类型关键字(4个):auto、register、static、extern
其他关键字(4个):const、sizeof、typedef、volatile
1、数据类型关键字
1.1void关键字:a、用来修饰函数返回值;b、用来声明函数的入口函数;c、用来声明空类型指针;
2、控制语句
2.1