⼲货笔记C语⾔编程基本语法
C 语⾔
C语⾔是⼀种通⽤的、⾯向过程的⾼级编程语⾔。。UNIX操作系统,C编辑器,和⼏乎所有的UNIX应⽤程序都是⽤C语⾔编写的。C语⾔最早的原型是ALGOL 60。
1963 年,剑桥⼤学将其发展成为 CPL。
1967 年,剑桥⼤学的 Matin Richards 对 CPL 语⾔进⾏了简化,产⽣了 BCPL 语⾔。
1970 年,美国 AT&T 贝尔实验室的 Ken Thompson 将 BCPL 进⾏了修改,并取名叫做 B 语⾔,意思是提取 CPL 的精华,并⽤ B 语⾔写了第⼀个 UNIX 系统。
1973年,贝尔实验室的Dennis Ritchie在 BCPL 和 B 语⾔的基础上设计出了⼀种新的语⾔,取 BCPL 中的第⼆个字母为名,这就是⼤名⿍⿍的 C 语⾔。
随后不久,UNIX 的内核和应⽤程序全部⽤ C 语⾔改写,从此,C 语⾔成为 UNIX 环境下使⽤最⼴泛的主流编程语⾔。
C 语⾔的版本
K&R C:1978 年,语⾔之⽗和UNIX 之⽗Dennis Ritchie和Brian Kernighan合作推出了《C 程序设计语⾔》的第⼀版,书末的参考指南⼀节给出了当时 C 语⾔的完整定义,成为那时 C 语⾔事实上的标准,⼈们称之为 K&R C。从这⼀年以后,C 语⾔被移植到了各种机型上,并受到了⼴泛的⽀持,使 C 语⾔在当时的软件开发中⼏乎⼀统天下。
C89(ANSI C):随着C 语⾔在多个领域的推⼴、应⽤,⼀些新的特性不断被各种编译器实现并添加进来。于是,建⽴⼀个新的 “⽆歧义的、与具体平台⽆关的 C 语⾔定义” 成为越来越重要的事情。1983 年,ASC X3成⽴了⼀个专门的技术委员会 J11,负责起草关于 C 语⾔的标准草案。1989 年,草案被 ANSI 正式通过成为美国国家标准,被称为 C89标准。
C90(ISO C):随后,《C 程序设计语⾔》第⼆版开始出版发⾏,书中内容根据ANSI C(C89)进⾏了更新。1990年,在ISO/IEC JTC1/SC22/WG14的努⼒下,ISO 批准了 ANSI C 成为国际标准。于是 ISO C(⼜称为 C90)诞⽣了。除了标准⽂档在印刷编排上的某些细节不同外,ISO C(C90)和 ANSI C(C89)在技术上完全⼀样。
C95:之后,ISO 在 1994、1996 年分别出版了 C90 的技术勘误⽂档,更正了⼀些印刷错误,并在1995 年通过了⼀份C90 的技术补充,对 C90 进⾏了微⼩的扩充,经过扩充后的 ISO C 被称为 C95。
C99:1999 年,ANSI 和 ISO ⼜通过了最新版本的 C 语⾔标准和技术勘误⽂档,该标准被称为 C99。
基础c语言代码GCC 中指定此版本时所⽤参数有两种写法:
-std=c99
-std=iso9899:1999
C11:2011 年发布了当前最新的 C 语⾔标准为 C11,指 ISO 标准 ISO/IEC 9899:2011。此 C11 标准未完成之前的草案,被叫做 C1X。GCC 中指定此版本时所⽤参数有两种写法:
-std=c11
-std=iso9899:2011
ISO 的 C 语⾔标准,定义了对于 C 语⾔的两种实现:
1.⽀持 C 语⾔的所有库函数。
2.⽀持 C 语⾔的基本库函数(+ 各⾃版本对应的实现)。
△基本库函数包括:<float.h>,<limits.h>,<stdarg.h>,<stddef.h>
△ AMD1对应的是:<iso646.h>
△ C99对应的是:<stdbool.h>,<stdint.h>
△ C11对应的是:<stdalign.h>,<stdnoreturn.h>
C 语⾔的特点
△ C 是⼀门中级语⾔。它把⾼级语⾔的数据结构、语句等特性与低级语⾔(汇编语⾔)的实⽤性结合起来。C 语⾔可以像汇编语⾔⼀样对位、字节和地址进⾏操作,⽽这三者是计算机最基本的⼯作单元。
△ C 是⼀门结构式语⾔。结构式语⾔的显著特点是代码及数据的分割化,即程序的各个部分除了必要的信息交流外彼此独⽴。这种结构化⽅式可使程序层次清晰,便于使⽤、维护以及调试。C 语⾔是以函数形式提供给⽤户的,这些函数可⽅便的调⽤,并具有多种循环、条件语句控制程序流向,从⽽使程序完全结构化。
△ C 语⾔功能齐全。具有各种各样的数据类型,并引⼊了指针概念,可使程序效率更⾼。
△ C 语⾔具有绘图能⼒强,可移植性,并具备很强的数据处理能⼒,因此适于编写系统软件、三维、⼆维图形和动画,⽀持多种显⽰器和驱动器。
C 语⾔的优点
△既有⾼级语⾔的结构和编程环境,⼜有类似于低级语⾔(汇编语⾔)的系统资源操纵能⼒。⽬标代码的执⾏效率只⽐汇编低 10~20% ,⽐其他⾼级语⾔⾼,适合解决有实时要求的问题;
△有丰富的运算符、数据类型和表达式,对程序设计有良好的适应性;
△⽀持以函数为基础结构化程序设计、多⽂件构成及⽂件独⽴编译,适合⼤型复杂程序设计;
△语⾔简洁、紧凑,使⽤⽅便、灵活,书写形式⾃由;
△代码及可执⾏程序的可移植性好。
C 语⾔的缺点
△ C 语⾔它的最⼤的缺点就是,如果你的项⽬很复杂,⼤量的开发⼈员互相之间需要更新⼤段代码时,C 语⾔可能会使事情变得异常⿇烦。因为C 是在⾯向对象⽅法流⾏之前开发的,这⼤⼤降低了C 语⾔复杂设计的可能性。但这不代表C 语⾔做不了⼤项⽬,世界上有太多的经典都是⽤ C 语⾔完成的,只是说这⾥⾯的复杂度会更⾼。
△输⼊输出相对很多语⾔都较为复杂。对于字符串的处理,只能通过字符数组实现。绘图操作较为复杂。
△ C 语⾔的缺点主要表现在数据的封装性上,这⼀点使得 C 在数据的安全性上有很⼤缺陷,这也是 C 和 C++ 的⼀⼤区别。
△ C 语⾔的语法限制不太严格,对变量的类型约束不严格(弱类型语⾔),影响程序的安全性,对数组下标越界不作检查等。从应⽤的⾓度,C语⾔⽐其他⾼级语⾔较难掌握。
△指针是C 语⾔的⼀⼤特⾊,可以说是C 语⾔优于其它⾼级语⾔的⼀个重要原因。就是因为它有指针,可以直接进⾏靠近硬件的操作,但是 C 的指针操作也给它带来了很多不安全的因素。C++ 在这⽅⾯做了很好的改进,在保留了指针操作的同时⼜增强了安全性。Java 取消了指针操作,提⾼了安全性。
△类型检查机制相对较弱、缺少⽀持代码重⽤的语⾔结构。
搭建编程环境
△操作系统:CentOS7
△编辑器:VIM
△编译器:GCC
安装 GCC:
查看 GCC 版本:
编程:
编译:
NOTE:因为 Linux 下可执⾏⽂件的后缀仅仅是⼀种形式,所以可执⾏⽂件也可以不带后缀。
运⾏:
基本语法
C 程序的⽂件类型:
△ .h:头⽂件,⽤于声明宏、变量、函数,定义类等
△ .c:C 程序源码⽂件
△ .cpp:C++ 程序源码⽂件
C 语⾔程序是由函数定义和类型定义组成的。因此⼀个源⽂件就是⼀系列的函数和类型。每个函数都可以调⽤其他函数或调⽤⾃⾝(递归),可以使⽤任何已经声明的或内建(C 标准库)的数据类型。
C 语⾔代码是从前往后依次执⾏的,所以你可以后定义,但必须先声明。你还可以调⽤其他库提供的函数,使⽤库中提供的数据类型,这也是 C 中多层级系统的复杂性不断增长的根源。
C 程序主要包括以下部分:
△ Tokens(令牌):C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是⼀个符号。
这五个令牌分别是:
△注释:使⽤ // 或 /* ... */ 作为单⾏或多⾏注释。
△函数:完成特定任务的与语句、表达式的集合。
△语句、表达式:⼀⾏代码。表达式(Expression)总有值,⽽语句(Statement)不总有。
△标识符:⾃定义的变量、函数的命名标识,⼀个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟若⼲个字母、下划线和数字(0-9)。⼤⼩写敏感,使⽤驼峰风格。
△关键字:C 中的保留字,这些保留字不能作为标识符。
△换⾏符:使⽤ ; 作为程序换⾏符(语句结束符),表明⼀个逻辑实体的结束。
△空格:只包含空格的⾏,被称为空⽩⾏,可能带有注释,C 编译器会完全忽略它。
①程序的第⼀⾏ #include <stdio.h> 是预处理器指令,告诉 C 编译器在预处理过程中要包含 stdio.h ⽂件。
②下⼀⾏ int main() 是主函数,程序从这⾥开始执⾏。
③下⼀⾏ /*...*/ 是注释内容,在预处理过程会被忽略。
④下⼀⾏ printf(...) 是 C 中的标准函数,会在屏幕上显⽰消息 “Hello, World!”。
⑤下⼀⾏ return 0 终⽌ main() 函数,并返回值 0。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论