目录
编译与链接
理解项目、源文件、头文件
main函数
库函数
基本关键词的介绍
字符与ASCII编码
转义字符
在上一期,小编给大家介绍了如何选择一款合适的编译器,接下来,小编会拿VS2022这一款编译器来给大家一一深入讲解目录中的内容
1.编译与链接
C语⾔是一门编译型的计算机语⾔,C语言源代码都是文本文件,这些文本文件本身是无法执行的,必须通过编译器翻译和链接器的链接,生成二进制可执行文件,可执行文件才可以执行。
VS2022中.c文件 .c后缀文件的展示
我们C语言的代码都是放在.c为后缀的文件中的,要想的得到最终的可执行程序,中间要经过编译和链接两个过程。
一个工程一般都由多个源文件组成,上面这幅图演示了程序经过编译器和链接器处理的过程,在这里小编还要说几点,每个以.c为后缀的源文件单独经过编译器处理生成对应的目标文件(.obj),多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe)。
这就是Windows电脑上生成.exe后缀的可执行文件
2.理解项目、源文件、头文件
在VS这款编译器上写代码,我们是需要创建项目的,直接新建项目即可,我们可以在项目中任意添加源文件和头文件,C语言把.c为后缀的文件叫做源文件,把.h为后缀的文件叫做头文件。
这就是.h和.c后缀的文件3.main函数
每条C语言不管有多少行代码,都是从main函数开始执行的,main函数也叫做主函数,是程序的入口,且main函数有且只能有一个,即使项目中有多个.c为后缀的文件,主函数也只能有一个(我们可以理解为程序的入口只能有一个)
第一次写代码常见的一些错误总结:把主函数main写成了mian,i和a写反了,将main函数后面的()漏掉了,代码中不能使用中文符号,一条语句结束后要加分号。
int main(){return 0;}
这就是一个主函数,int代表整型的意思,这里还需要说明的一点是,主函数其实也是有参数的,但是不需要的时候可以不加,这里也许有很多小伙伴都会产生疑问,参数是什么意思,等我们学习到函数以及指针的时候,小编还会给大家细讲......
int main(int argc ,char* argv[]){ return 0;}
main函数后面括号中的内容就是main函数的参数。
4.库函数
什么是库函数呢?为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数。在这个基础上一些编译器厂商可能会额外扩展提供部分函数(这些函数其他编译器不不一定支持)。
一个系列的库函数⼀般会声明在同⼀个头文件中,所以库函数的使⽤,要包含对应的头文件。 库函数比较多,后期慢慢来介绍,提前了解可参考 https://cplusplus.com/reference/clibrary/#include<stdio.h>
这里就拿这段代码来给大家讲解, #include<stdio.h>调用一个函数库的一段代码,假设我们要使用的函数是库函数里面的一个函数,如果不调用的话,不可使用这个库函数里面的函数。这里的.h就是头文件,stdio中,std表示standard,i表示input,o表示output,所以stdio.h就表示一个标准输入输出头文件。
5.基本关键词的介绍
C语言中有一批保留的名字的符号,比如: int 、 if 、 return ,这些符号被称为保留字或者关键字,关键字都有特殊的意义,是保留给C语言使用的,程序员自己在创建标识符的时候不能和关键字重复,关键字也是不能自己创建的。
auto break case char const continue default do double else enum externfloat for goto if int long register return short signed sizeofstaticstruct switch typedef union unsigned void volatile while
代码块中列出的32个关键字是C语言中最常见的32个关键字,在C99标准中加入了inline、 restrict、_Bool、 _Complex、_Imaginary等关键字。如果大家还想了解其他关键字可以参考https://zh.cppreference.com/w/c/keyword这里面有C语言关键字的全部介绍。
5.字符与ASCII编码
我们在键盘上可以敲出各种字符,如:s,r,&,!等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:'t','n','%'。我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个人自己给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(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个字符是不可打印字符,无法打印在屏幕上观察
6.转义字符
也许在前面的代码中你看到 '\n' , ' \0' 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。 ' \n' 是⼀个转义字符表示换行的意思,我们可以简单的理解为 ' \ ' 让' n' 的意思 发生了转变,' n' 本来是一个普通的字符,被' \ ' 转义为换行的意思。 C语⾔中像这样的转义字符还有⼀些,具体如下: \? :在书写连续多个问号时使⽤,防止他们被解析成三字母词,在新的编译器上没法验证了。 \' :用于表示字符常量 ' \" :用于表示一个字符串内部的双引号 \\ :用于表示一个反斜杠,防止它被解释为⼀个转义序列符。 \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。 \b :退格键,光标回退一个字符,但不删除字符。 \f :换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。 \n :换行符。 \r :回车符,光标移到同一行的开头。 \t :制表符,光标移到下一个水平制表位,通常是下⼀个4/8的倍数。 \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下一行的同⼀列。 下⾯2种转义字符可以理解为:字符的8进制或者16进制表示形式 \ddd :d d d表示1~3个八进制的数字。 如: \130 表示字符X \xdd :d d表示2个十六进制数字。 如: \x30 表示字符0 \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其ASCII码值是0。 转义字符参考: https://zh.cppreference.com/w/c/language/escape