0%

C语言基础知识点汇总(用来个人复习!)

C语言介绍

C语言是一门面向过程的计算机编程语言,既适合于系统程序设计,又适合于应用程序设计。它是一种抽象化的通用程序设计语言,广泛用于底层开发,尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。
现在最新的C语言标准是 C18

C语言发展历程

C语言诞生于美国的贝尔实验室,由D.M.Ritchie以B语言为基础发展而来,在它的主体设计完成后,ThompsonRitchie用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。

1972年C语言诞生,C语言之父是丹尼斯·里奇(Dennis Ritchie),同时也是UNIX之父。

C语言标准发布顺序:

  1. K&R C:1978年由布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)出版了《The C Programming Language》,这本书被C语言开发者们称为K&R,很多年来被当作C语言的非正式标准。人们称这个版本的C语言为K&R C。
  2. ANSI C:1989年ANSI发布了C语言标准,被称为C89、ANSI C.
  3. ISO/IEC 9899:1990:1990年ISO和IEC把C89标准定为C语言的国际标准,又称C90、ISO C,是C语言的第一个官方版本,因此C89、C90、ANSI C、ISO C、ANSI/ISO C实际上是一套东西。
  4. ISO/IEC 9899:1990/Cor 1:1994
  5. ISO/IEC 9899:1990/Amd 1:1995
  6. ISO/IEC 9899:1990/Cor 2:1996
  7. ISO/IEC 9899:1999:1999年ISO和IEC发布了C99,是C语言的第二个官方版本。
  8. ISO/IEC 9899:1999/Cor 1:2001
  9. ISO/IEC 9899:1999/Cor 2:2004
  10. ISO/IEC 9899:1999/Cor 3:2007
  11. ISO/IEC 9899:2011:2011年ISO和IEC发布了C11,是C语言的第三个官方版本。
  12. ISO/IEC 9899:2011/COR 1:2012
  13. ISO/IEC 9899:2017:C17只是解决了针对C11报告的许多缺陷。
  14. ISO/IEC 9899:2018:在 ISO/IEC 9899:2017(C17)的免费草案基础上做了部分修正。

C语言常用编译器

编译器

  • GCC :GNU组织开发的开源免费的编译器。
  • MinGW : Windows操作系统下的GCC。
  • Clang : 开源的BSD协议的基于LLVM的编译器。
  • Visual C++ : cl.exe,Microsoft VC++自带的编译器。

集成开发环境

  • Code :Blocks,开源免费的C/C++ IDE。
  • CodeLite :开源、跨平台的C/C++集成开发环境。
  • Dev-C++ :可移植的C/C++IDE,Dev C++ 是一款免费开源的 C/C++ IDE,内嵌 GCC 编译器(Linux GCC 编译器的 Windows 移植版),是 NOI、NOIP 等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。
  • C-Free :C-Free 是一款国产的 Windows 下的C/C++ IDE,最新版本是 5.0,整个软件才 14M,非常轻巧,安装也简单,界面也比 Dev C++ 漂亮。C-Free 的缺点也是调试功能弱。可惜的是,C-Free 已经多年不更新了,组件都老了,只能在 XP、Win7 下运行,在 Win8、Win10 下可能会存在兼容性问题。
  • Visual Studio系列 :Windows 下首先推荐大家使用微软开发的 Visual Studio(简称 VS)。

C语言的具体结构

我的第一个程序(Hello World)

1
2
3
4
5
6
7
8
9
10
//先写头文件(就是一条预处理命令, 它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。)
#include<stdio.h>
//注:在最新的C标准中,main函数前的类型为int而不是void
//再写函数,一个C程序有且只有一个主函数,即main函数。
int main()
{
printf("Hello World");
//return后面是函数的返回值,根据函数类型的不同,返回的值也是不同的。
return 0;
}

代码格式规范

  • 一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行。
  • 函数体内的语句要有明显缩进,通常以按一下Tab为一个缩进。
  • 括号要成对写,如果需要删除的话也要成对删除。
  • 当一句可执行语句结束的时候末尾需要有分号。
  • 代码中所有符号均为英文半角符号。

定义变量的标识符

  1. 标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。 
  2. 标识符区分大小写字母。
  3. 标识符的长度,c89规定31个字符以内,c99规定63个字符以内。
  4. C语言中的关键字,有特殊意义,不能作为标识符。
  5. 自定义标识符最好取具有一定意义的字符串,便于记忆和理解。

定义变量赋值

变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。

    ※ 注:
  1. 赋值语句:int a=1;int b;b=1;但是不能连等,int a=b=1 ×
  2. 定义的所有变量要进行初始化,否则定义的数据可能是计算机储存的数据

C语言基本语句

  • scanf("");——输入语句
  • printf("");——输出语句
  • gets("");——字符串输入语句
  • put("");——字符串输出语句
  • //注释内容——单行注释语句
  • /*注释内容*/——多行注释
※ 注:在使用scanf("");连续输入字符或字符串时,要注意:

1.在除第一个字符或字符串外前加上空格,来抵消之前输入的空格/回车

1
2
3
4
5
6
7
8
#include<stdio.h> 
int main()
{
char a,b;
scanf("%c",&a);
scanf(" %c",&b); //在%c前加上一个空格
printf("%c,%c",a,b);
}

2.用fflush清空缓冲区。

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
fflush(stdin);
scanf("%c",&b);
printf("%c,%c",a,b);
}

3.用getchar吸收字符。

1
2
3
4
5
6
7
8
9
#include<stdio.h> 
int main()
{
char a,b;
scanf("%c",&a);
getchar();
scanf("%c",&b);
printf("%c,%c",a,b);
}

4.在第一个%c后面加上一个*c,忽略下一个读入的字符。

1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char a,b;
scanf("%c*c",&a);
scanf("%c",&b);
printf("%c,%c",a,b);
}

数据类型关键字

  1. short——声明短整型变量或函数
  2. int——声明整型变量或函数
  3. long——声明长整型变量或函数
  4. float——声明浮点变量或函数
  5. double——声明双精度变量或函数
  6. char——声明字符型变量或函数
  7. void——声明函数无返回值或无参数,声明无类型指针
  8. signed——声明有符号类型变量或函数
  9. unsigned——声明无符号类型变量或函数/li>
  10. struct——声明结构体变量或函数
  11. enum——声明枚举类型
  12. union——声明共用体(联合)数据类型

控制语句

    循环语句:
  1. while——循环语句
  2. do-while——先执行循环体,然后判断循环条件是否成立. 之后继续循环
  3. for( ; ; )——循环,可替代while语句; 只是用法不同
  4. break;——跳出当前循环
  5. continue;——结束这一轮循环,开始下一轮循环
    条件语句:
  1. if/else if——条件语句
  2. else——条件语句否定分支(与 if 连用)
  3. goto——无条件跳转语句
  4. switch(){case 一个整型:语句;default:语句}——用于多项条件选择,case为选择分支,default为其他分支
    返回语句:
  1. return——返回语句

存储类型关键字

  1. auto——声明自动变量,一般不使用
  2. extern——声明引用变量
  3. register——声明积存器变量
  4. static——声明静态变量

其他关键字

  1. const——声明只读变量
  2. sizeof——计算数据类型长度
  3. typeof——用于给数据类型取别名
  4. volatile——说明变量在程序中可被隐含的改变

格式化输出语句