第一讲:C语言的常见概念
一、初识C语言
1.C语言是什么
C语言是一种计算机语言,有它自己的语法规则。
2.C语言的历史
1969年,贝尔实验室的肯·汤普森与丹尼斯·里奇开发了Unix操作系统。Unix是用汇编写的,为了可移植性,汤普森在BCPL语言的基础上发明了B语言。
1972年,丹尼斯·里奇和布莱恩·柯林汉在B语言的基础上设计出了C语言。
1973年,整个Unix系统使用C语言重新,C语言开始快速流传,并应用于各种操作系统和软件的开发。
1988年,美国国家标准协会(ANSI)正式将C语言标准化,标志着C语言开始稳定和规范化。
一直到今天C语言还是在广泛的使用,在计算机语言的排行榜霸占前三名。
3.编译和链接
C语言是一门编译型计算机语言,其通过编译器翻译和链接器的链接生成二进制的可执行文件,可执行文件才能执行。
C语言的运行是通过编译和链接2个过程,其代码放在.c为后缀的文件中的。
一个工程一般都会有多个源文件组成。流程一般为:
- 每个源文件
.c文件 → 编译器 → 目标文件.obj文件- 多个目标文件和库文件(链接库) → 链接器 → 可执行程序
.exe文件
4.编译器的对比
C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令。
常见的C语言编译器有哪些呢?
比如:msvc、clang、gcc就是一些常见的编译器,也有一些**集成开发环境(IDE)**如:VS2026、XCode、CodeBlocks、DevC++、Clion等。
集成开发环境(IDE)用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码的编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
- VS2026集成了MSVC(安装包较大,傻瓜式安装,无需多余配置,使用方便)
- XCode集成了clang(苹果电脑上的开发工具)
- CodeBlocks集成了gcc(比较小众,需配置环境,不推荐)
- DevC++集成了gcc(小巧,过于简单,对代码风格养成不好,竞赛使用较多)
- Clion默认使用CMake,编译器可配置(收费,暂时不推荐)
VS2026安装可参考:VS2026安装教程
5.第一个C语言程序
#include<stdio.h>intmain(){printf("hello C\n");return0;}5.1 main函数
main函数是程序的主入口,在一个项目中有且仅可有一个,即使有多个.c源文件,也只能有一个main函数。
C语言默认返回0表示正常,返回非0表示异常返回。
6.printf()
6.1 printf() 是一个库函数
printf()的功能是:
在标准输出设备(一般指屏幕)上进行信息的打印(打印格式化内容信息)。
使用printf()函数需要包含头文件<stdio.h>
6.2 占位符
%d - 以十进制形式打印有符号整数(demical十进制)
%c - 打印字符(character)
%f - 打印单精度浮点数(float)
%lf- 打印双精度浮点数(double)
本节只学习几个基本的占位符,后续会学习更多相关的占位符。
6.3 库函数
为了不在重复实现常见的代码,提升开发效率,C语言标准规定了一些函数,这些函数在不同编译器厂家根据标准实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数。
一个系列的库函数一般会声明在同一个头文件中,使用时需包含对应的头文件。库函数链接:库函数链接
6.4 关键字
C语言中有一批保留的名字的字符,这些符号被称为保留字或者关键字。
注意:
1.关键字有特殊的意义,保留给C语言使用的。
2.关键字不能自己创建。
C语言关键字全部介绍:关键字介绍
7.char 字符
键盘上可以敲出的各种字符,使用单引号''括起来的。
比如在屏幕上显示ASNI值为31~127之间的字符(前31个字符是无法在屏幕中显示出来的),程序如下:
#include<stdio.h>intmain(){for(inti=32;i<=127;i++){printf("%c ",i);}}7.1 ASNII 编码
每个字符编一个二进制序列,叫做编码。
为了互相通信不造成混乱,美国国家标准协会(ASNI)出台了一个标准的ASCII标准。
参考:ASCII标准
7.2 掌握的知识点
1.字符
A-Z的ASCII码值从65-90;
2.字符a -z的ASCII码值从97-112;
3.对应的大写字母+32= 小写字母的ASCII码值;
4.数字0-9对用的ASCII码值为48-57;
5.换行符\n的ASCII码值为10;
6.ASCII码值从0-31这32个字符是不可打印字符,无法打印在屏幕上观察。
7.3 字符串
使用双引号""括起来的一串字符串被称为字符串,如"abcdef"。
字符串的占位符为:%s;
字符串末尾隐藏默认放着一个 \0 字符;
\0 字符是字符串的结束标志;\0的ASCII码值为0。
// 字符串的两种打印方式intmain(){printf("%s\n","hello C");printf("hello C");return0;}需要注意的下面两种情况的输出方式的区别:
字符数组后不加 \0 的情况,则输出时没有结束标志,则后续输出是未知的。
intmain(){chararr1[]="abc";chararr2[]={'a','b','c'};printf("%s\n",arr1);printf("%s\n",arr2);return0;}8.转义字符
前面已近学习了几个转义字符,本节我们学习更多的转义字符。
intmain(){// 1.\? 书写连续多个问号,防止被解析为三字母词,现在新编译器已经无法验证了。printf("(are you ok??)");// 早起编译器可能输出 (are you ok]printf("(are you ok\?\?)")// 2.\' 表示字符常量 'printf("%c",'\'');// 3.\" 表示字符常量 "printf("%c","abc\"xyz\"def");// 4.\\ 表示字符常量 \printf("%c","c:\\test\\16\\data.text");// c:\test\16\data.text// 5. \a 表示警报,终端发出的警报声或出现闪烁,或两种同时发生printf("%a\n");// 6. \b 退格键,光标回退一个字符,但不删除可能会被覆盖printf("abc\bdef");// abcefprintf("abc\b\bdef");// acef// 7. \n 换行符// 8. \r 回车符,光标移到同一行的开头printf("abcdef\r");// 9. \t - 制表符,光标移到下一个水平制表符,通常是下一个4/8的倍数printf("a\tbc\tdef\tghiq\tnnnnn\tw\n");// 特殊的两种转义字符// 10.\ddd - d d d表示 1~3 位八进制的数字,如\130,十进制为88,表示字符'X'printf("%c\n",'\130');// X// 11.\xdd - d d 表示 1~2 位十六进制的数字,如\x30,十进制为48,表示字符'0'printf("%c\n",'\x30');// 0return0;}注意:
1.数字0开头表示八进制数字,比如071表示十进制的数字57
2.字符x开头表示十六进制数字,比如0x30表示十进制的数字48
9 语句
后续章节再详细介绍,本节不做介绍!
有写的不好的地方请大家积极指正出来,谢谢!
【自勉】表格终会翻篇,技术方能立身,坚持下去,必有回响。
