大话C语言:第1篇 C语言概述

1 前言

        嵌入式物联网基础课程之一的C语言,作为一门常青树的编程语言,它依旧活跃在互联网与通信领域的各个行业。随着新能源等新兴行业的崛起,C语言的重要性愈发凸显。因此,掌握C语言成了必备的基础,跟着职创未来的脚本,我们一起加油,一起努力。

        从本文开始,我们将分一系列文章,全面讲述关于C语言的方方面面;无论你是职场精英还是大学校园小白,跟上我们的脚本,一定能成为一名合格的嵌入式物联网工程师。

2 C语言简介

1.1 C语言发展历

        C语言的发展史可以追溯到20世纪60年代,它起源于一种更早的高级编程语言Agol 60。随后,剑桥大学的研究人员在此基础上发展出了CPL语言,进而简化为BCPL语言。在这个过程中,C语言的前身逐渐浮出水面。

        1978年,丹尼斯·里奇(Dennis Ritchie)与布莱恩·科尔尼(Brian Kernighan)合作出版了著名的《The C Programming Language》一书,该书对C语言的标准和规范进行了详细的阐述,使得C语言成为了最为广泛流传的编程语言之一。

C语言主要发展历程包括:

  • 1972年C语⾔在贝尔实验室诞⽣. 丹尼斯·里奇 参考B语言开发。

  • 1970-80年代,C语言被⼴泛应用,产生很多不同的C语言版本。程序可移植性比较差。

  • 1983年,美国国家标准委员会(ANSI) 成⽴⼀个小组来制定C语⾔的标准。 C语言支持哪些语法、支持哪些功能 等等。

  • 1989年,通过了C语言的第⼀个标准-C89标准。

  • 1990年,国际标准化组织(ISO) 和 国际电工委员会(IEC) 将 C89标准当做国际的C语言标准。 C89和 C90指的是同⼀个标准。

  • 1994年 ISO和 IEC 对 C89标准进行修订,发布了 C94标准。 由于并没有增加新的语法特性,还是叫做 C89或者C90。

  • 1995年 ISO和IEC再次做了修正,发布了C95 标准。

  • 1999年 ISO 和 IEC 发布了C语⾔新标准-C99标准。 C语言第⼆个标准。在该标准中,新增许多实用的C语言语法特性,例如,增加新的关键字、可变长数组等等。

  • 2007年,重新修订了C语言。

  • 2011年, 发布新的版本。新增了⼀些语法,泛型、国际化支持。 目前为止最新版本是 C11。

1.2 标准的影响

  • 可将C语⾔的标准理解为C语⾔说明书。但其并没有强制性约束⼒。

如:微软拿到标准,认为有些标准不合理,不⽀持。

微软认为某些特性⾮常好,但标准中没有,微软可以修改标准,新增语法.

  • 如果编译器不⽀持标准,我们即使使用标准中的语法仍然会报错。

  • 编译器版本也会影响程序。因此,编写程序之前要确定编译器版本。

1.3 常用的C/C++编译器

  • 微软公司的Visual Studio

  • 苹果公司的XCode

  • 英特尔的Intel C++

  • Linux 默认使⽤的编译器GCC/G++,它们对对标准支持最好

补充知识:

        GNU Compiler Collection(gcc),即GNU编译器套件。gcc是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix 及苹果 MacOS 操作系统的标准编译器。

        如果操作系统没有安装gcc,参考以下命令安装gcc编译器:

# 安装gcc
whccf@whccf-VirtualBox:~$ sudo apt-get install gcc

# 查询一下gcc编译器
whccf@whccf-VirtualBox:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 

3 第一份代码HelloWorld

#include <stdio.h>

int main() 
{
    printf("hello world\n");

    return 0;
}

4 代码分析

  • include头文件包含

    • #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件

    • 使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件

    • 头文件:在c语言中后缀名为h的文件被称为头文件,头文件就像一本书的目录,当我们想使用某本书里的内容时,只需把目录(头文件)引进来就可以了。

  • main函数

    • 程序的入口,一个程序有且只有一个main函数入口

    • {}叫代码块,一个代码块内部可以有一条或者多条语句

    • 所有的可执行语句必须是在代码块里面

    • C语言每句可执行代码都是";"分号结尾

    • 所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的

  • printf函数

    • printf是C语言库函数,功能是向标准输出设备输出一个字符串

    • printf(“hello world\n”);

    • \n的意思是回车换行

  • return语句

    • return代表函数执行完毕,返回return代表函数的终止

    • 在main函数中return 0代表程序执行成功

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值