个人主页: 熬夜学编程的小林

系列专栏: 【C语言详解】 【数据结构详解】

C语言基本概念

  • 1、C语言是什么?
  • 2、C语言的历史和辉煌
  • 3、编译器的选择VS2022
    • 3.1、编译和链接
    • 3.2、编译器对比
    • 3.3、VS2022优缺点
  • 4、VS项目和源文件、头文件介绍
  • 5、第一个C语言程序
  • 6、main函数
  • 7、printf函数和库函数
  • 8、关键字介绍
  • 9、字符和ASCII编码
  • 总结

1、C语言是什么?

在我们的日常生活中,⼈和⼈交流使用的是就是语言,但在这个世界上有很多的国家,很多的民族,因此也有很多的语言,如:汉语、英语、日语, 这些语言我们称之为自然语言。但是计算机并不能理解我们使用的语言,那⼈和计算机是怎么交流的呢?
答案是使用计算机语言。
目前已知已经有上千种计算机语言,人们是通过计算机语言写的程序,给计算机下达指令,让计算机⼯作的。
C语言就是众多计算机语言中的⼀种,当然C++/Java/Go/Python都是计算机语言。

2、C语言的历史和辉煌

C语言最初是作为Unix系统开发工具发明的。

1969年,贝尔实验室的肯.汤普森(Ken Thompson)与丹尼斯.里奇(Dennis Ritchie)一起开发了Unix操作系统。Unix是用汇编语言写的,为了移植到其他计算机,汤普森就在BCPL语言的基础上发明了B语言。

1972年,丹尼斯·里奇(Dennis Ritchie)与莱恩·克尼汉(Brian Kernighan)又在B语言的基础上重新设计了一种新的语言,这种新的语言取代了B语言,所以称为C语言。

1973年,整个Unix系统都是用C语言重写,此后,这种语言开始快速流传,广泛用于各种操作系统和系统软件的开发。

1988年,美国国家标准协会(ANSI)正式将C语言标准化,标志着C语言开始稳定和规范化。

至今,一直到今天C语言还是在广泛的使用,在计算机的排行榜上霸占前三名。

排行榜链接TIOBE INDEX

3、编译器的选择VS2022

3.1、编译和链接

C语言是⼀门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成⼆进制的可执行⽂件,可执行文件才能执行。

C语言代码是放在 .c 为后缀的文件中的,要得到最终运行的可执行程序,中间要经过编译和链接2个过程。


⼀个工程⼀般都会有多个源文件组成,如下图所示,演示了源程序经过编译器和链接器处理的过程。

注:
1、每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
2.、多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)

下图是在Windows电脑上C语言程序生成的exe可执行文件。

3.2、编译器对比

C语言是⼀门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令。

那我们常见的C语言编译器都有哪些呢?

比如:msvc、clang、gcc就是⼀些常见的编译器,当然也有⼀些集成开发环境如:VS2022、XCode、CodeBlocks、DevC++、Clion等。

集成开发环境(IDE)用于提供程序开发环境的应用程序,⼀般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。

• VS2022集成了MSVC(安装报包较大⼀些,安装简单,无需多余配置,使用起来非常方便)
• XCode集成了clang(苹果电脑上的开发工具)
• CodeBlocks集成了gcc(这个⼯具比较小众,需要配置环境,不太推荐)
• DevC++集成了gcc(小巧,但是⼯具过于简单,对于代码风格的养成不好,⼀些竞赛使用)
• Clion是默认使⽤CMake,编译器是可以配置的(工具是收费,所以暂时不推荐大家使用)

整体考虑,推荐大家安装VS2022的社区版本学习,免费,使用方便,工作中常见。

3.3、VS2022优缺点

优点:
• VS2022是⼀个主流的集成开发环境,企业中使用较为普遍
• VS2022包含了:编辑器+编译器+调试器,功能强大
• 直接安装即可使用,基本不用额外配置环境,上手容易
• 默认界面是中文的,初学者友好

缺点:
• 功能丰富,安装包大,占用空间多

4、VS项目和源文件、头文件介绍

在VS上写代码,我们是需要创建项目的,直接新建项目就可以了。
在项目中就可以添加源文件和头文件。
C语言把 .c 为后缀的文件称为源文件,把 .h 为后缀的文件称为头文件

5、第一个C语言程序


具体代码的讲解会在下面的内容详细讲解。

上面示例演示VS2022中创建项目和编写C代码的过程,并运行出结果。

注:在VS2022上运行代码的快捷键: Ctrl+f5

由上述可知一个程序的书写,需要有头文件,主函数,主语句,主函数返回值。小林想说的是,必须有的是头文件和主函数。

6、main函数

每个C语言程序不管有多少行代码,都是从 main 函数开始执行的, main 函数是程序的入口,main 函数也被叫做:主函数。 main 前⾯的 int 表⽰ main 函数执行结束的时候返回⼀个整型类型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。

• main函数是程序的入口
• main函数有且仅有⼀个
• 即使⼀个项目中有多个.c⽂件,但是只能有⼀个main函数(因为程序的入口只能有⼀个)

第⼀次写代码,⼀些常见的错误总结:
• • main被写成了mian
• main后边的()漏掉了
• 代码中不能使用中文符号,比如括号和分号
• ⼀条语句结束后,有分号

7、printf函数和库函数

在上面的代码中有⼀句代码如下:

printf("hello C\n");

代码中使用了 printf 函数,实现了在屏幕上的信息的打印

这里简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进行信息的打印。上面的代码是使用printf 函数打印字符串。只要把想要打印的⼀串字符放在双引号中并传递给printf函数就可以打印。**

printf函数也可以用来打印其他类型的数据,比如:

int n = 100;printf("%d\n", n); //printf打印整型printf("%c\n", 'q'); //printf打印字符printf("%lf\n", 3.14); //printf打印双精度浮点型

代码中使用了 printf 函数,实现了在屏幕上的信息的打印
这个头文件,具体的方法就是:

 #include 

那什么是库函数呢?

为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了⼀组函数,这些函数再由不同的编译器⼚商根据标准进行实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函数其他编译器不⼀定支持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。

库函数比较多,后期慢慢来介绍,提前了解可参考链接:
cplusplus

8、关键字介绍

C语言中有⼀批保留的名字的符号,比如: int 、 if 、 return ,这些符号被称为保留字或者关键字

• 关键字都有特殊的意义,是保留给C语⾔使⽤的 。
• 程序员⾃⼰在创建标识符的时候是不能和关键字重复的。
• 关键字也是不能自己创建的。

C语⾔的32个关键字如下:

auto break case char const continue default do double else enum externfloat for goto if int long register return short signed sizeofstruct switch typedef union unsigned void volatile while

注:在C99标准中加⼊了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键字。
⼀些关键字大家可以去了解⼀下,不过使用最多的还是上⾯的32个关键字。
注:C语言关键字(C语⾔关键字的全部介绍)

9、字符和ASCII编码

键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:‘a’,‘b’,‘@’

我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个人自己给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码C语言中的字符就遵循了ASCII编码的方式。

参考:ASCII码表
我们不需要记住所有的ASCII码表中的数字,使用时查看就可以,不过我们最好能掌握⼏组特殊的数据:

• 字符A – Z的ASCII码值从65~90
• 字符a – z的ASCII码值从97~122
• 对应的大小写字符(a和A)的ASCII码值的差值是32
• 数字字符0 – 9的ASCII码值从48~57
• 换行 \n的ASCII值是:10
• 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察

单个字符的打印可以使用%c来指定格式:

#include int main(){printf("%c\n", 'Q');printf("%c\n", 81);//这⾥的81是字符Q的ASCII码值,也是可以正常打印的return 0;}

可打印字符展示:

#include int main(){int i = 0;for (i = 32; i <= 127; i++){printf("%c ", i);if (i % 16 == 15)//一行最多打印16个数printf("\n");}return 0;}

总结

本篇博客就结束啦,谢谢大家的观看,如果公主少年们有好的建议可以留言喔,谢谢大家啦!