C语言是一种面向过程的语言,目前主要应用于嵌入式开发,因为桌面开发有更高效的面向对象的开发技术。面向过程就是语言的设计流程是按照事物的时序来进行开发的,因此,当项目非常大的时候,维护起来就比较困难。
1.设计目标
是为提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。相对于汇编语言,C语言标志易懂、上手快、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。一般C语言代码只比汇编语言代码生成的目标代码效率低10%~20%。在当前单片机性能大幅提升、存储器大幅拉升的情况下,这点牺牲换来了极大的提高了开发速度、降低了编程难度,完全值得。
2.主要特点简洁 关键字非常少,而且意义明确,易懂易记。比如int是integer,char是character,float等等。
运算符丰富 C语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。并且运算规则不是那么严格,编程非常灵活。比如一个字符char可以不进行转换直接赋值给整数int,枚举型直接赋值给char或int等,这些操作在高级语言里如果不进行明确转换都是不允许直接赋值的。
地址读写 在嵌入式系统的应用中,必须要涉及对寄存器的访问。C语言可以便捷高效的实现这个功能。比如,ARM的CMSIS通用接口代码里,就用C的结构定义了所有片上的寄存器,对这些寄存器的访问,和访问变量没什么两样。如定义一个指向寄存器的变量,
uint32_t regData= *((uint32_t*)0x08000000);
//读取
x = regData;
//赋值
regData = a;
3.注意事项
C语言也是在不断的发展变化,因此也有许多不同的版本,如C89、C90、C95、C99等。这要求我们在实际应用的时候同样要注意版本的兼容性。这一点很容易被初学者忽略。比如C99支持在函数中任意位置定义变量,但是早期的版本就不支持。
4.难不难学
任意事物,只要下功夫,肯定会有收获。况且现在程序员那么多,说明了只要学习,肯定是很掌握的。当然熟练的程度,要取决于做项目的多少,熟能生巧。建议初学者理论联系实际,多做实际,学好它并不难。