1.C语言是什么?
如果我们想要学习C语言的话,就需要知道C语言是什么,那么C语言什么呢?从C语言的名字来联想,语言在百度百科的释意是人类最重要的交际工具和思维工具,人与人交流使用的是自然语言,而C语言是人与计算机交流的语言(C语言是众多计算机语言中的一种,我们所熟知C++/Java/Go/Python都是计算机语⾔。)
C语言的设计者丹尼斯·里奇(Dennis Ritchie)在开发C语言时,参考了更早的B语言(由肯·汤普森 Ken Thompson 创建)。由于C语言在B语言的基础上进行了大幅改进(例如引入数据类型、结构等),因此按字母顺序命名为“C”,象征其是B语言的“下一代”。它最初用于重写Unix操作系统,并因其简洁、灵活和接近硬件的特性,成为计算机领域影响深远的编程语言之一。
https://www.tiobe.com/tiobe-index/
(在这个网站中可以看到C语言的动态排名)
2.C语言编译器的选择
类似C语言这样的程序设计语言被称为“高级语言”,这些语言都是接近人们习惯的自然语言和数学语言作为表达形式,使人们的学习非常方便。
但是,对于计算机本身来说,它并不能直接识别由高级编程语言编写的程序,他只能接受和处理由0和1的代码构成的二进制指令或数据。由于这种形式的指令是面向机器的,因此也被称为”机器语言“。
我们把由高级语言编写的程序1称为“源程序”,把由二进制代码表示的程序称为“目标程序”。为了把源程序转换成机器能接受的目标程序,软件工作者编制了一系列软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。这种具有编译功能的软件称为”编译程序“每种高级语言都有与他对应的编译程序。
2.1编译与链接
C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。
C语⾔代码是放在 .c 为后缀的⽂件中的,要得到最终运⾏的可执⾏程序,中间要经过编译和链接2个过程。每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件),多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)。
2.2编译器的对比
由上可知,C语⾔是⼀⻔编译型的计算机语⾔,需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。 那我们常⻅的C语⾔编译器都有哪些呢?
⽐如:msvc、clang、gcc 就是⼀些常⻅的编译器,当然也有⼀些集成开发环境 如:VS2022、XCode、CodeBlocks、DevC++、Clion 等。
(集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、 编译器 、 调试器 和 图形⽤⼾界⾯ 等⼯具。 集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。))
- VS2022 集成了MSVC(安装包较⼤⼀些,安装简单,⽆需多余配置,使⽤起来⾮常⽅便)
- XCode 集成了clang(苹果电脑上的开发⼯具)
- CodeBlocks 集成了gcc(这个⼯具⽐较⼩众,需要配置环境,不太推荐)
- DevC++ 集成了gcc(⼩巧,但是⼯具过于简单,对于代码⻛格的养成不好,⼀些竞赛使⽤)
- Clion 是默认使⽤CMake,编译器是可以配置的(⼯具是收费,所以暂时不推荐⼤家使⽤)
3.第一个C语言程序
#include <stdio.h>
int main()
{
printf("hello C\n");
return 0;
}
- 运行这个程序会显示出hello C,
- 我们来分析一下这个程序
- #include<stdio.h>是这个程序的头文件,这在每个c程序中是必不可少的,
- main函数是主函数名,C语言规定必须用main作为主函数名,其后的一对圆括号中间可以为空的,但是这一对圆括号不能省略,,程序中的main()函数是主函数的起始行,也是C程序执行的起始行,每一个可执行的C程序都必须有一个且只能有一个主函数,一个c程序总是从主函数开始运行的,
- 语句用“;”结束,C程序的每一条执行语句都必须用分号结束,分号是C语句的一部分,不是语句与语句之间的分隔符。
- return 0;是它的返回值
3.1printf和库函数
上面有一句代码如下
printf("hello world");
代码中使⽤了 printf 函数,实现了在屏幕上的信息的打印。
printf是一个库函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印。
除了打印字符串外,还可以打印其他类型的数据,同时我们在使用库函数的时候,是需要包含头文件的,即
#include<stdio.h>
那么什么是库函数呢?
为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函数其他编译器不⼀定⽀持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件
4.关键字的介绍
C语⾔中有⼀批保留的名字的符号,比如说 int, if,return,这些这些符号被称为保留字或者关键字。
- 关键字都有特殊的意义,是保留给C语⾔使⽤的
- 程序员⾃⼰在创建标识符的时候是不能和关键字重复的
- 关键字也是不能⾃⼰创建的。
c语言的关键字如下 -
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile whil
在c99标准中加入了inline,restrict,_Bool,_Complex,_Imaginary等关键字
5.字符和ASCII编码
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 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个字符是不可打印字符,⽆法打印在屏幕上观察