C语言深度学习——入门篇

       C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
语言特点
1、 高级语言 :它是把 高级语言 的基本结构和 语句 与低级语言的实用性结合起来的工作单元。
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语言的运算类型极其丰富, 表达式 类型多样化。灵活使用各种运算符可以实现在其它 高级语言 中难以实现的运算。
3、 数据类型丰富 C语言的数据类型有: 整型 、实型、字符型、数组类型、指针类型、 结构体类型 、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、 表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、 允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问 物理地址 ,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像 汇编语言 一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写 系统软件
6、 生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于 调试 、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。
7、 可移植性好
C语言在不同机器上的C 编译程序 ,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8、 表达力强
C语言有丰富的数据结构和 运算符 。包含了各种数据结构,如 整型 、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位( bit )操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和 驱动器 。且计算功能、 逻辑判断 功能强大。

缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对 数组下标越界 不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。

C11新特性
1、对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及头文件)。
2、_Noreturn 函数标记,类似于 gcc 的 __attribute__(noreturn)。
3、_Generic关键字
4、多线程(Multithreading)支持,包括:_Thread_local存储类型标识符,;头文件,里面包含了线程的创建和管理函数。
5、增强的Unicode的支持,基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件.
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类型修饰符和头文件。


你可能感兴趣的:(c语言,深度学习)