【c语言】 基本信息(拼音,读音等)  我要纠错

简体

繁体

c語言

拼音

ā yǔ yán

怎么读

英语

c language

【c语言】的意思和解释

【c语言】是什么意思(来源:教育Wiki编版)


C语言,是一种通用的、程序式的程序语言,广泛用于系统与应用软体的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序设计师中备受青睐。最近25年是使用最为广泛的程序语言。

C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年由 肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。

目前,C语言编译器普遍存在于各种不同的作业系统中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。

C语言的设计影响了许多后来的程序语言,例如C++、Objective-C、Java、C#等。

1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(American National Standard Institution)为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。

1980年代至今的有关程序开发工具,一般都支援符合ANSI C的语法。

目录
设计哲学

C语言是一个程序语言,设计目标是提供一种能以简易的方式编译、处理低阶记忆体、产生少量的机器码以及不需要任何执行环境支援便能执行的程序语言。C语言也很适合搭配组合语言来使用。尽管C语言提供了许多低阶处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(微控制器或称MCU)以及超级电脑等作业平台。

特色
  1. C语言是一个有结构化程序设计、具有变数作用域(variable scope)以及递回功能的程序式语言。
  2. 传递参数是以值传递(Pass-by-value),也可以透过指标来传递参数(Pass-by-address)。
  3. 不同的变数类型可以用结构体(struct)组合在一起。
  4. 只有32个保留字(reserved keywords),使变数、函式命名有更多弹性。
  5. 部份的变数类型可以转换,例如整型和字元型变数。
  6. 透过指标(pointer),C语言可以容易的对记忆体进行低阶控制。
  7. 编译预处理(preprocessor)让C语言的编译更具有弹性。
历史
早期发展

C语言最早是由丹尼斯·里奇为了在PDP-11电脑上执行的UNIX系统所设计出来的程序语言,第一次发展在1969年到1973年之间。之所以被称为「C」是因为C语言的很多特性是由一种更早的被称为B语言的程序语言中发展而来。早期作业系统的核心大多由组合语言组成,随着C语言的发展,C语言已经可以用来编写作业系统的核心。1973年,Unix作业系统的核心正式用C语言改写,这是C语言第一次应用在作业系统的核心编写上。

K&R C

1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·柯林汉(Brian Kernighan)合作出版了《C程序语言》的第一版。书中介绍的C语言标准也被C语言程序设计师称作「K&R C」,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色:


  1. 结构(struct)型别
  2. 长整数(long int)型别
  3. 无号整数(unsigned int)型别
  4. 把运算子=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。


即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最低标准要求,许多老旧的编译仍然执行K&R C的标准。

ANSI C 和 ISO C

1989年,C语言被 ANSI 标准化(ANSI X3.159-1989)。标准化的一个目的是扩充功能K&R C。这个标准包括了一些新特性。在K&R出版后,一些新特性被非官方地加到C语言中。

  1. void 函式
  2. 函式返回 struct 或 union 型别
  3. void * 资料型别

在ANSI标准化自己的过程中,一些新的特性被加了进去。ANSI也规定了一套标准函式库。ANSI ISO(国际标准化组织)成立 ISO/IEC JTC1/SC22/WG14 工作群组,来规定国际标准的C语言。透过对ANSI标准的少量修改,最终透过了 ISO 9899:1990。随后,ISO标准被 ANSI 采纳。传统C语言到ANSI/ISO标准C语言的改进包括:

  1. 增加了真正的标准库
  2. 新的预处理命令与特性
  3. 函式原型允许在函式申明中指定参数型别
  4. 一些新的关键字,包括 const、volatile 与 signed
  5. 宽字元、宽字串与多位元组字元
  6. 对约定规则、宣告和型别检查的许多小改动与澄清

WG14工作小组之后又于1994年,对1985年颁布的标准做了两处技术修订(缺陷修复)和一个补充(扩充功能)。下面是 1994 年做出的所有修改:

  1. 3 个新的标准库标头档 iso646.h、wctype.h 和 wchar.h
  2. 几个新的记号与预定义巨集,用于对国际化提供更好的支援
  3. printf/sprintf 函式一系列新的格式代码
  4. 大量的函式和一些型别与常量,用于多位元组字元和宽位元组字元


C99

在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化建立过程中继续发展壮大。《标准修正案一》在1994年为C语言建立了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支援。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。C99被ANSI于2000年3月采用。在C99中包括的特性有:

  1. 增加了对编译器的限制,比如源程序每行要求至少支援到 4095 位元组,变数名函式名的要求支援到 63 位元组(extern 要求支援到 31)。
  2. 增强了预处理功能。例如:

巨集支援取可变参数 #define Macro(...) __VA_ARGS__

使用巨集的时候,允许省略参数,被省略的参数会被扩充功能成空串。

支援 // 开头的单行注释(这个特性实际上在C89的很多编译器上已经被支援了)

  1. 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool

支援 long long, long double _Complex, float _Complex 等型别

  1. 支援不定长的阵列,即阵列长度可以在执行时决定,比如利用变数作为阵列长度。宣告时使用 int a[var] 的形式。不过考虑到效率和实作,不定长阵列不能用在全域,或 struct 与 union 里。
  2. 变数宣告不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。
  3. 允许采用(type_name){xx,xx,xx} 类似于 C++ 的建构函式的形式构造匿名的结构体。
  4. 初始化结构的时候允许对特定的元素赋值,形式为:

struct test{int a[3],b;} foo[] = { [0].a = {1}, [1].a = 2 };

struct test{int a, b, c, d;} foo = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是对 .c,.d 赋值的

  1. 格式化字串中,利用 \\\\u 支援 unicode 的字元。
  2. 支援 16 进制的浮点数的描述。
  3. printf scanf 的格式化串增加了对 long long int 型别的支援。
  4. 浮点数的内部资料描述支援了新标准,可以使用 #pragma 编译器指令指定。
  5. 除了已有的 __line__ __file__ 以外,增加了 __func__ 得到当前的函式名。
  6. 允许编译器化简非常数的运算式。
  7. 修改了 / % 处理负数时的定义,这样可以给出明确的结果,例如在C89中-22 / 7 = -3, -22 % 7 = -1,也可以-22 / 7= -4, -22 % 7 = 6。 而C99中明确为 -22 / 7 = -3, -22 % 7 = -1,只有一种结果。
  8. 取消了函式返回型别预设为 int 的规定。
  9. 允许 struct 定义的最后一个阵列不指定其长度,写做 [](flexible array member)。
  10. const const int i 将被当作 const int i 处理。
  11. 增加和修改了一些标准标头档,比如定义 bool 的 <stdbool.h> ,定义一些标准长度的 int 的 <inttypes.h> ,定义复数的 <complex.h> ,定义宽字元的 <wctype.h> ,类似于泛# 型的数学函式 <tgmath.h>, 浮点数相关的 <fenv.h>。 在<stdarg.h> 增加了 va_copy 用于复制 ... 的参数。 里增加了 struct tmx ,对 struct tm 做了扩充功能。
  12. 输入输出对宽字元以及长整数等做了相应的支援。
  13. 但是各个公司对C99的支援所表现出来的兴趣不同。当GCC和其它一些商业编译器支援C99的大部分特性的时候[2],微软和Borland却似乎对此不感兴趣。
C11

2011年12月8日,ISO正式发行了新的C语言的新标准C11,之前被称为C1X,官方名称为ISO/IEC 9899:2011。新的标准提高了对C++的相容性,并增加了一些新的特性。这些新特性包括:

  1. 对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算子, aligned_alloc函式以及<stdalign.h>标头档。
  2. _Noreturn 函式标记,类似于 gcc 的 __attribute__((noreturn))。
  3. _Generic 关键字。
  4. 多执行绪(Multithreading)支援,包括:_Thread_local储存型别识别元,<threads.h>标头档,里面包含了执行绪的建立和管理函式。
  5. 增强的Unicode的支援。基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支援。包括为UTF-16/UTF-32编码增加了char16_t和char32_t资料型别,提供了包含# # unicode字串转换函式的标头档<uchar.h>.
  6. 删除了 gets() 函式,使用一个新的更安全的函式gets_s()替代。
  7. 增加了边界检查函式介面,定义了新的安全的函式,例如 fopen_s(),strcat_s() 等等。
  8. 增加了更多浮点处理巨集。
  9. 匿名结构体/联合体支援。这个在gcc早已存在,C11将其引入标准。
  10. 静态断言(Static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。
  11. 新的 fopen() 模式,(「…x」)。类似 POSIX 中的 O_CREAT|O_EXCL,在档锁中比较常用。
  12. 新增 quick_exit() 函式作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。
  13. _Atomic型别修饰词和<stdatomic.h>标头档。
【c语言】是什么意思(来源:辞书)
  • 由贝尔实验室所发展出来的一种程序设计语言,其可以如组合语言般的操作。该语言可以在多种的电脑上执行,且广为使用的UNIX作业系统是以C语言来制作的。在1980年代的后期,成为发展商用软体的主要语言之一。

相关词语
词海的部份资料来自网络或由网友提供,不保留版权,如有侵权,请与我们联系以从站上删除! 免责声明:本站非营利性站点,以方便网友为主,仅供学习。
Tip:SCCG