[C语言]1.0 C语言的基本介绍

写在前面

C语言是门既简单又复杂的语言,这正是它的魅力所在。因此学习的时候,切忌一条道走到黑,而是要像掰洋葱一样,逐渐深入。

为什么嵌入式开发要选择C语言?

C语言从1972年诞生以来,已经有48年的历史了。期间出现过许许多多的编程语言,然而C语言的地位依旧屹立不倒。由于种种原因,业界选择C语言,其中最主要的原因在于它的效率。优秀的C语言代码,能与汇编代码一样高效。相比于汇编语言,C语言是一种面向过程的编程语言,具有更好的可阅读性,便于程序员进行开发维护。

下面是C语言和汇编语言实现求最大公约数的代码对比,感受下两者的差异。

C语言

int gcd(int a, int b)
{
    
    
    while(a != b)
    {
    
    
        if(a > b)
            a = a - b;
        else
            b = b - a;
    }
    return a;
}

汇编语言

gcd
CMP   R0, R1      ; 比较a和b大小
SUBGT R0, R0, R1  ; if(a > b) a = a - b;
SUBLT R1, R1, R0  ; if(b > a) b = b - a;
BNE   gcd         ; if(a != b)跳转到gcd继续;
MOV   PC, LR      ; 程序结束,返回结果

日常工作中,基本上都是使用C语言,只有在要对ARM内核进行操作或者代码启动部分需要用到少量的汇编代码。顺便提一下,有志于成为大神的同学,汇编可是要必修的。但是不适合一上来就学汇编。

C语言历史

C语言最初由Dennis Ritchie于1969年到1973年在AT&T贝尔实验室里开发出来,主要用于重新实现Unix操作系统。此时,C语言又被称为K&R C。其中,K表示Kernighan的首字母,而R则是 Ritchie的首字母。

由于C语言被各大公司所使用(包括当时处于鼎盛时期的IBM PC),因此到了1989年,C语言由美国国家标准协会(ANSI)进行了标准化,此时C语言又被称为ANSI C

而仅过一年,ANSI C 就被国际标准化组织 ISO 给采纳了。此时,C语言在 ISO 中有了一个官方名称——ISO/IEC 9899: 1990。这就是俗称的C89C90

在随后的几年里,C语言的标准化委员会又不断地对C语言进行改进,到了1999年,正式发布了ISO/IEC 9899: 1999,简称为C99标准。

2007年,C语言标准委员会又重新开始修订C语言,到了2011年正式发布了ISO/IEC 9899: 2011,简称为C11标准。

C18于2018年6月发布,是C编程语言的当前标准。它没有引入任何新的语言功能,只是对C11中的缺陷进行了技术更正和澄清。

这就是C语言的简短历史介绍,感兴趣的通信可以查看英文维基百科获取更详细介绍或者关注标准组织的官网了解详情。

英文维基百科:
打开英文维基百科

标准组织官网:
打开标准组织官网

C语言基本介绍

C语言程序通常由必要的注释,声明和函数组成。

注释起到说明及提示的作用,不参与实际的代码运作,类似于我们读书时在书上做的笔记。注释有两种方式,一种是//组合的,中间数据为注释,另一种为//,该行其后数据都是注释。

声明描述了将要操作的数据或函数。

函数是实现某些功能的代码块。

gcd.c文件

int gcd(int a, int b) // 函数定义
{
    
    
    while(a != b)
    {
    
    
        if(a > b)
            a = a - b;
        else
            b = b - a;
    }
    return a;
}

main.c文件

#include <stdio.h> // 包含标准C的库函数头文件,该头文件包含printf函数的声明
extern int gcd(int a, int b); /* 函数声明 */
void main(void)
{
    
    
    int result = 0; /* 变量定义,并初始化为0 */
    result = gcd(4, 6); /* 函数调用,并把结果赋值给result变量 */
    printf("result=%d\r\n", result); /* 调用标准输入输出函数,进行数据输出 */
}

至此,相信你应该对C语言有一定的了解了,要知道的是跨出第一步非常重要。

猜你喜欢

转载自blog.csdn.net/weixin_37366441/article/details/121333700
今日推荐