二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
语言特点
2、
结构式语言
:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及
调试
。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
4、
代码级别的跨平台
:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、
DOS
、
UNIX
等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。
5、
使用指针
:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。
C++
在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了
指针
操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在
虚拟机
中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。
特有特点
C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
不同的变量类型可以用结构体(struct)组合在一起。
只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
部份的变量类型可以转换,例如整型和字符型变量。
通过指针(pointer),C语言可以容易的对存储器进行低级控制。
预编译处理(preprocessor)让C语言的编译更具有弹性。
优缺点
优点
1、
简洁紧凑、灵活方便
C语言一共只有32个
关键字
,9种
控制语句
,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像
汇编语言
一样对位、
字节
和地址进行操作,而这三者是计算机最基本的工作单元。
2、
运算符丰富
C语言的
运算符
包含的范围很广泛,共有34种运算符。C语言把
括号
、
赋值
、
强制类型转换
等都作为运算符处理。从而使C语言的运算类型极其丰富,
表达式
类型多样化。灵活使用各种运算符可以实现在其它
高级语言
中难以实现的运算。
4、
表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、
允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问
物理地址
,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像
汇编语言
一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写
系统软件
。
6、
生成目标代码质量高,程序执行效率高
7、
可移植性好
8、
表达力强
C语言有丰富的数据结构和
运算符
。包含了各种数据结构,如
整型
、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(
bit
)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和
驱动器
。且计算功能、
逻辑判断
功能强大。
缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对
数组下标越界
不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
C11新特性
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>头文件。
2、 运算符丰富
C语言的 运算符 包含的范围很广泛,共有34种运算符。C语言把 括号 、 赋值 、 强制类型转换 等都作为运算符处理。从而使C语言的运算类型极其丰富, 表达式 类型多样化。灵活使用各种运算符可以实现在其它 高级语言 中难以实现的运算。
4、
表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、
允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问 物理地址 ,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像 汇编语言 一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写 系统软件 。
6、 生成目标代码质量高,程序执行效率高
由于C语言允许直接访问 物理地址 ,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像 汇编语言 一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写 系统软件 。
6、 生成目标代码质量高,程序执行效率高
7、
可移植性好
8、
表达力强
C语言有丰富的数据结构和 运算符 。包含了各种数据结构,如 整型 、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位( bit )操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和 驱动器 。且计算功能、 逻辑判断 功能强大。
C语言有丰富的数据结构和 运算符 。包含了各种数据结构,如 整型 、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位( bit )操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和 驱动器 。且计算功能、 逻辑判断 功能强大。
缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对 数组下标越界 不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对 数组下标越界 不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。