+-
编程界的常青树C语言,这些新特性你了解多少?


在技术迭代速度狂飙突进的计算机领域,技术淘汰速度快的惊人,但是C语言一直都在主流程序设计语言中占据着重要地位。我想,这大概是因为C语言恰好是开发效率和运行效率的最佳平衡点。


C语言这棵常青树,语法简单明了、历史积累丰富、和硬件距离贴近、和系统容易对接、学习资源海量、应用场合广泛,至今还是那么生机勃勃。


C11标准新特性


C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准。相比目前广泛使用的c99标准,C11 标准有哪些改进的地方呢?


1、 对齐处理

alignof(T)返回T的对齐方式,aligned_alloc()以指定字节和对齐方式分配内存,头文件<stdalign.h>定义了这些内容。

2、 _Noreturn

_Noreturn是个函数修饰符,位置在函数返回类型的前面,声明函数无返回值,有点类似于gcc的__attribute__((noreturn)),后者在声明语句尾部。

3、 _Generic

_Generic支持轻量级范型编程,可以把一组具有不同类型而却有相同功能的函数抽象为一个接口。

4、 _Static_assert()

_Static_assert(),静态断言,在编译时刻进行,断言表达式必须是在编译时期可以计算的表达式,而普通的assert()在运行时刻断言。

5、安全版本的几个函数

gets_s()取代了gets(),原因是后者这个I/O函数的实际缓冲区大小不确定,以至于发生常见的缓冲区溢出攻击,类似的函数还有其它的。

6、 fopen()新模式

fopen()增加了新的创建、打开模式“x”,在文件锁中比较常用。

7、 匿名结构体、联合体

8、 多线程

头文件<threads.h>定义了创建和管理线程的函数,新的存储类修饰符_Thread_local限定了变量不能在多线程之间共享。

9、_Atomic类型修饰符和头文件<stdatomic.h>。

10、改进的Unicode支持和头文件<uchar.h>。

11、quick_exit()

又一种终止程序的方式,当exit()失败时用以终止程序。

12、复数宏,浮点数宏。

13、time.h新增timespec结构体,时间单位为纳秒,原来的timeval结构体时间单位为毫秒


C语言的学习是从基础语法再到高阶算法循序渐进的过程,不能一口吃成胖子,一定要选择一本可以系统学习的书,并认真学完。


所以异步推荐大家从《C Primer Plus》开始入门,系统地了解C语言的基础语法和简单应用。


...

C Primer Plus(第6版)中文版

作者:【美】Stephen Prata(史蒂芬 普拉达)

译者: 姜佑

广告


C Primer Plus 第6版 中文版(异步图书出品)

作者:[美]史蒂芬·普拉达(Stephen,Prata)

京东


现在,你还拥有上海交大、北师大名师带你科学阅读本书机会。


大咖直播,限时免费

...


预习资料选读


C是编译型语言。如果之前使用过编译型语言(如Pascal或FORTRAN) ,就会很熟悉组建C程序的几个基本步骤。但是,如果以前使用的是解释型语言(如BASIC) 或面向图形界面语言(如Visual

Basic),或者甚至没接触过任何编程语言,就有必要学习如何编译。别担心,这并不复杂。


首先,为了让读者对编程有大概的了解,我们把编写C程序的过程分解成7个步骤 。注意,这是理想状态。在实际的使用过程中,尤其是在较大型的项目中,可能要做一些重复的工作,根据下一个步骤的情况来调整或改进上一个步骤。


...

以上内容节选自《C Primer Plus》


推荐书籍


...

C Primer Plus(第6版)中文版

作者:【美】Stephen Prata(史蒂芬 普拉达)

译者: 姜佑

广告

C Primer Plus 第6版 中文版(异步图书出品)

作者:[美]史蒂芬·普拉达(Stephen,Prata)

京东


内容简介:

本书在上一版本的基础上进行了全面更新,全面讲述了C语言编程的相关概念和知识,并且涵盖了C编程语言最近的变动发展、以及C11标准。本书适合希望系统学习C语言的读者,也适用于精通其他编程语言并希望进一步掌握和巩固C编程技术的程序员。