大家好,今天我们来学习C语言第一章
接下来我会为大家详细的介绍C语言
目录
1.C语言的什么
2.C语言的发展史
3.编译和链接
4.VS项目和源文件、头文件介绍
5. main函数
6. printf和库函数
7. 关键字介绍
8. 字符和ASCII编码
9. 字符串和\0
10. 转义字符
11. 语句和语句分类
12. 注释是什么?为什么写注释?
1. C语⾔是什么?
⼈和⼈为了交流出现了人类语言(也就是自然语言),如:汉语、英语、⽇语 ;
1996年计算机诞生,人们为了与计算机交流出现了计算机语言(也就是机器语言)
⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机 ⼯作的。
C语⾔就是众多计算机语⾔中的⼀种,当然C++/Java/Basic/Python都是计算机语⾔,它们中的大多数被称为“高级语言”。
但是对于计算机本身来说,它并不能直接识别由高级语言编写的程序,它只能接受和处理由0和1的代码构成的二进制指令或数据。由这种形式的指令是面向机器的,因此也被称为“机器语言”
2.C语言的发展史
C语言是面向过程的语言,既有高级语言的特点又有低级语言的特点,C语言的基于B语言的基础发展起来的,早期主要用于UINX系统。
3.编译和链接
我们把由高级语言编写的程序过程称为“源程序”,把由二进制代码表示的程序称为“目标程序”。为了把源程序转换成机器能接受的目标程序,软件工作者编辑了一系列软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制机器指令。这种具有编译功能的软件称为“编译程序”,每种程序语言都有与它对应的编译程序。例如,C语言的编译程序接受这样的一种软件,其功能如图:
我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。由C语言构成的指令序列称为C源程序;按C语言的语法编写C程序的过程,称为C语言的代码编写。
C源程序经过C编译程序编译之后生成一个后缀.OBJ的二进制文件(称为目标项目),然后由称为“连接程序”的软件,把此.OBJ的文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。在操作系统环境下,只需要点击或输入此文件的名字,该执行文件就可运行;
4.VS项目和源文件、头文件介绍
在VS上写代码,我们是需要创建项⽬的,直接新建项⽬就可以了。
在项⽬中就可以添加源⽂件和头⽂件。
C语⾔把 .c 为后缀的⽂件称为源⽂件,把 .h 为后缀的⽂件称为头⽂件。
如何新建项目:
5. main函数
一个C程序中可以有一个或多个源文件,源文件扩展名”.C“,一个源文件中可以包含一个或多个函数,函数是构成C程序的基本单位,一个C程序可以有一个或多个函数,但是有且只能有一个main函数
每个 C 语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝, main 函数也被叫做:主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类 型的值。所以在 main 函数的最后写 return 0; 正好前后呼应
6. printf和库函数
代码中使⽤了 printf 函数,实现了在屏幕上的信息的打印。 这⾥简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏 幕)上进⾏信息的打印。上⾯的代码是使⽤ printf 函数打印字符串。
只要把想要打印的⼀串字符放 在双引号中并传递给printf函数就可以打印。
printf函数也可以⽤来打印其他类型的数据,比如:
这⾥的 %d , %c 等是占位符,会被后边的值替换。(后面再介绍);
在里面/n的做用是用来换行的例如:
用库函数的时候,是需要包含头⽂件的,⽐如: printf 函数需要包含的库函数就是 stdio.h 这个头⽂件,
那什么是库函数呢? 为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数再由不 同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。这些函数组成了⼀个函数库,被称为标准 库,这些函数也被称为库函数。在这个基础上⼀些编译器⼚商可能会额外扩展提供部分函数(这些函 数其他编译器不⼀定⽀持)。
⼀个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使⽤,要包含对应的头⽂件。
库函数⽐较多,后期慢慢来介绍,提前了解可参考链接:https://cplusplus.com/reference/clibrary/
7. 关键字介绍
C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键 字。
• 关键字都有特殊的意义,是保留给C语⾔使⽤的
• 程序员⾃⼰在创建标识符的时候是不能和关键字重复的
• 关键字也是不能⾃⼰创建的
C语言的关键字如下:
⼀些关键字⼤家可以去了解⼀下,不过使⽤最多的还是上⾯这些关键字。
https://zh.cppreference.com/w/c/keyword(C语⾔关键字的全部介绍)
8. 字符和ASCII编码
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号 括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆ 进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为 了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语 ⾔中的字符就遵循了 ASCII 编码的⽅式。
ASCII 码表
下列码表含有全部 128 个 ASCII 十进制 (dec) 、八进制 (oct) 、十六进制 (hex) 及字符 (ch) 编码。
本图参考:https://zh.cppreference.com/w/cpp/language/ascii
我们不需要记住所有的ASCII码表中的数字,能掌握⼏组特殊的数据就足够
对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
数字字符0~9的ASCII码值从48~57
换⾏ \n 的ASCII值是:10
9. 字符串和\0
什么是字符串?双引号括起来的⼀串字符就被称为字符串。
字符“串”顾名思义就是一串字符组成起来的就叫字符串 例如:“abcdefg”、“123abc”。
字符可以是任何可打印的字符,包括字母、数字、标点符号和空格等。
在编程中,字符串通常被用来存储和处理文本数据。字符串可以被表示为一维字符数组或指针,也可以使用特定的字符串数据类型来处理和操作。字符串可以进行拼接、比较、搜索、替换等操作,是编程中常用的一种数据类型。
字符串的打印格式可以使⽤ %s 来指定,也可以直接打印 例如:
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串 的结束标志。
对于字符串"abcdef",我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏⼀个 \0 的 转义字符, \0 是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者 strlen() 计算字符串⻓度的时候,遇到 \0 的时候就⾃动停⽌了。
C语⾔中也可以把⼀个字符串放在⼀个字符数组中,我们在这⾥利⽤下⾯的代码验证⼀下 \0 的功能。
我们可以看到, arr1 字符数组在打印的时候,打印了 a 、 b 、 c 后还打印了⼀些随机值,这就是 因为 arr1 在末尾的地⽅没有 \0 字符作为结束标志,在打印的时候没有停⽌,这些随机值也被称为乱码。
但是 arr2 的打印就是完全正常的,就是因为 arr2 数组是使⽤字符串常量初始化的,数组中有隐藏的 \0 作为技术标志,打印可以正常停⽌。
如图:
如果我们在arr1数组中单独放⼀个 '\0' 字符会怎么样呢?
从此图可以出看到三次打印的结果是⼀样的,这就意味着只要都打印时候遇到 \0 的时候就停⽌了,那从上述的例⼦我们确实能够观 察到 \0 的作⽤和重要性的。
10. 转义字符
也许在前⾯的代码中你看到 \n , \0 很纳闷时啥。其实在字符中有⼀组特殊的字符是转义字符,转义 字符顾名思义:转变原来的意思的字符。
比如:我们有字符 n ,在字符串中打印的时候⾃然能打印出这个字符,如:
如果我们改一下在n前面加上\那输出结果如下:
这里我们就可以看到这两次的输出结果截然不同,这就是转义字符的问题, \n 是⼀个转义字符表示换行的意思,我们可以简单的理解为 \ 让 n 的意思 发⽣了转变, n 本来是⼀个普通的字符,被 \ 转义为换行的意思
C语⾔中像这样的转义字符还有⼀些,具体如下:
\? :在书写连续多个问号时使用,防止他们被解析成三字⺟词,在新的编译器上没法验证了。
\' :用于表示字符常量'
\" :用于表示⼀个字符串内部的双引号
\\ :用于表示⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
\b :退格键,光标回退⼀个字符,但不删除字符。
\f :换页符,光标移到下一叶。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
\n :换⾏符。
\r :回⻋符,光标移到同一行的开头。
t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个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
11. 语句和语句分类
C语⾔的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:
一 ,空语句
二 ,表达式语句
三 ,函数调⽤语句
四 , 复合语句
五 , 控制语
接下来我为大家一一讲解:
一. 空语句
空语句是最简单最好理解的,⼀个分号就是⼀条语句,是空语句。例:
空语句,⼀般出现的地⽅是:这⾥需要⼀条语句,但是这个语句不需要做任何事,就可以写⼀个空语句。
二.表达式语句
表达式语句就是在表达式的后边加上分号 例:
三 ,函数调⽤语句
函数调用语句也是一种非常常见的一种语句,就是函数调⽤的时候,也会加上分号,就是函数调⽤语句。例:
四 , 复合语句
复合语句其实就是前⾯讲过的代码块,成对括号中的代码就构成⼀个代码块,也被称为复合语句。
例:
五 , 控制语
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,而C语言中的顺序结构、选择结构、循环结构它们都不得不依赖于控制语句,只有有了控制语句才可以实现这三种结构,C语言中有九种控制语句。
可以分为以下三类:
1. 条件判断语句也叫分⽀语句:if语句、switch语句;
2. 循环执⾏语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句;
注:这里只是给大家了解一下,后期我会和大家一一了解
12. 注释是什么?为什么写注释?
注释是在计算机程序中添加的一些解释性文字,用于解释程序的功能、设计、实现和维护等方面的信息。注释通常不会影响程序的操作和执行,但对于开发人员来说是非常有用的。
写注释的目的是为了帮助开发人员更好地理解程序和代码的功能、实现和维护细节,从而提高程序的可读性和可维护性。注释还可以提高代码的可重用性,因为在理解代码功能的基础上,开发人员可以更好地重构和修改代码。
此外,注释还可以帮助开发人员更好地与其他人协作,在团队协作开发中,注释可以成为信息交流和沟通的桥梁。同时,注释还可以记录程序开发过程中的思路、想法和决策,对于后续开发或维护工作也会有帮助。
写注释⼀定程度上反应了程序作者的素质,建议⼤家写必要的注释,在未来找⼯作的时候,写代码时留下必要的注释也会给⾯试官留下更好的印象。
C 语⾔的注释有两种表示方法:
第一种:/**/ 的形式 这种⽅法是将注释放在 /*...*/ 之间,内部可以分行 例:
编译时,注释会被替换成⼀个空格,所以 min/* 这⾥是注释*/Value 在计算机眼里会变成 min Value ,而不 是 minValue 。
第二种:// 的形式
第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到行尾都属于注释。这种注释只能是单行,可以 放在首行,也可以放在一行语句的结尾。这是 C99 标准新增的语法。
在VS环境下如果要一次性注释多行可以使用CTRL+K+C,取消注释可以使用CTRL+K+U,也可以直接使用如图:
—————《本章完》————
。。。