第1讲C语言常见概念

目录

1.C语言是什么?

2.编译器的选择:VS2022

2.1编译和链接

2.2.推荐VS2022(Visual  Studio2022)

2.3.VS项目和源文件、头文件

3.第一个C语言程序

3.1在屏幕上打印hello

3.2.main函数(主函数):

3.3.int

3.4.printf和库函数

4.关键字

5.字符和ASCII编码

5.1.以字符b为例举例说明:

5.2.输入字符b和它的ASCII码值98所输出的值是一样的:

5.3.使用的%c打印,打印字符

5.4.使用%d打印,打印32-127的数字整型。

5.5掌握几组特殊的数据:

 6.字符串和\0

6.1.C语言字符串中一个特殊的知识点:

6.2.\0的作用:

6.3.举例说明:对比结束标志\0的影响

6.4.用strlen函数求字符串长度:

 7.转义字符

 7.1.常见的转义字符如下图所示:

8.语句和语句分类:

9.注释是什么?

9.1.注释的2种形式

10.习题作业


 

 

1.C语言是什么?

人和计算机通使用计算机语言交流,人们通过计算机语言写程序,给计算机下达指令,让计算机工作。

C语言是众多计算机语言中的一种,计算机语言还有C++,Java,Python等。

2.编译器的选择:VS2022

2.1编译和链接

 

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

 

(计算机可以识别二进制指令)Visual  Studio可以提供编译和链接。

注:

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

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

41aba6e366744fec9dbcacf09dd81c00.png

注:

1.每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)。

2.多个目标文件库文件经过链接器处理生成对应的可执行程序(.exe文件)。

2.2.推荐VS2022(Visual  Studio2022)

优点:

1.VS2022 是一个主流的集成开发环境,企业中使用较为普遍。

2.VS2022包含了:编辑器 编译器+调试器,功能强大。

3.直接安装即可使用,基本不用额外配置环境,上手容易。

4.默认界面是中文的,初学者友好。

缺点:

1.功能丰富,安装包大,占用空间多。

VS2022 的安装教程:超链接1https://www.bilibili.com/video/BV11R4y1s7jz/

2.3.VS项目和源文件、头文件

VS2022如何创建新项目--空项目-项目名称xxxx,位置可更改路径-创建成功-源文件-添加-新建项-c++文件-名称:xxx.c-添加。

b53ce644bd344387b6034c894c9421de.png

bff18bad1aad4e089814b68a846fcf39.png

a4dbeb1b790c43338570537508a92b04.png

1aad22ae56e54a69a54e253546595434.png

0362b2bdb4f445448f680da172fa285b.png  

590b5300c81745c0838e99b169f8276d.png

项目创建成功。

xxxx.h头文件

xxxx.c源文件

3.第一个C语言程序

3.1在屏幕上打印hello

f48b997c06814b908c6e463a9242f22a.png

编译+链接+运行:ctrl+F5或者在菜单栏里点击调试-开始执行。

3.2.main函数(主函数):

(1)main函数是程序的入口;

(2)main函数有且仅有一个

(3)即使一个项目中有多个.c文件,但是只能有一个main函数(程序入口只能有一个);

(4) main()不能省略括号。

注意:输入代码使用英文符号,一条语句结束后,就有分号;

每一个c语言程序都是从main函数开始执行的,main函数是程序的入口,main函数前面的int表示执行结束的时候返回一个整型类型的值,所以在main函数的最后写return 0,前后呼应。

3.3.int

[整型类型(integer)]表示main函数执行结束的时候返回一个整数,返回0。

3.4.printf和库函数

printf是函数[print打印 f-format格式]:在标准输出设备上进行信息打印,

printf("hello"):使用printf函数打印字符串hello(字符串放在双引号" "中)。

\n表示换行

4.关键字

关键字都有特殊的意义,是保留给C语言使用的。

程序员自己在创建标识符的时候不能和关键字冲突。

关键字也是不能自己创建

32个关键字分类

1、数据类型关键字(12个):

char、short、int、long、signed、unsigned、float、double、struct、union、enum、void

2、控制语句关键字(12个):

循环控制:for、do、while、break、continue

条件语句:if、else、goto

开关语句:switch、case、default

返回语句:return

3、存储类型关键字(5个): auto、extern、register、static、typedef

4、其它关键字(3个): const、sizeof、volatile

注:超链接2https://zh.cppreference.com/w/c/keyword(C语言关键字的全部介绍)

 

5.字符和ASCII编码

在键盘上可以敲出各种字符,如:@、a、?等,这些符号被称为字符,在C语言中这些字符用单引号括起来,如:‘@’‘a’。

计算机中所有数据都是以二进制的形式存储的,美国国家标准学会出台了标准的ASCII编码,如下所示:(此编码不全,可以去度娘查看全部的ASCII码)

02e7698c74d24c20b2e193f0adfc6849.jpg

5.1.以字符b为例举例说明:

b8fa3f2177724d2abfb6ff46042d6289.png

5.2.输入字符b和它的ASCII码值98所输出的值是一样的:

4af11811796844fca9af280eb3c7fb2f.png

5.3.使用的%c打印,打印字符

606604ac3dca4efebebec0a667839c2e.png

5.4.使用%d打印,打印32-127的数字整型。

c1e8c2fced344091b3b597cf6c0619ba.png

 

参考:超链接3https://zh.cppreference.com/w/cpp/language/ascii
不需要记住所有的ASCII码表中的数字

5.5掌握几组特殊的数据:

• 字符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.字符串和\0

C语言中使用双引号括起来一串字符被称为字符串,如:“abcd”,就是一个字符串,字符串的打印格式使用%s指定,也可以直接打印:

56bfe5d2524c4e28ac0da5a8aaa3fd89.png

 

6.1.C语言字符串中一个特殊的知识点:

字符串的末尾隐藏放着一个\0字符;

\0字符是字符串的结束标志。

a9c0dfa8311d4bdfa4b84648687730e0.png

例如: 字符串“abcd”,我们可以看到有a,b,c,d4个字符,但实际末尾隐藏了一个转义字符\0。

6.2.\0的作用:

\0字符是字符串的结束标志。

在使用库函数printf()打印字符串或者strlen()计算字符串长度的时候,遇到\0时自动停止。

6.3.举例说明:对比结束标志\0的影响

arr1中存放字符串,在arr2中存放字符。

b6e67915fd364101bc5324a2fe4c4154.png

 

27a1c28203634463a5f9668c453432a4.png

运行结果:

00f4734c20f34eb4b702495637da8fc5.png

arr1存放的是字符串,有隐藏的结束标志\0,所以识别到\0时会停止。

arr2因为存放的是字符,它没有结束标志\0,所以会一直打印,打印出来的乱码。

如果在arr2中,在字符后面加上‘/0’,就可以停止,如下图所示:

b5018c477aad47028e97d63d952f0a89.png

6.4.用strlen函数求字符串长度:

还可以通过strlen来求的它们的长度(strlen是一个函数,用来求字符串的长度,统计的是字符串中\0之前的字符个数。

如下图:

76b1207e9e384043a66a2ebba486e8e5.png

 arr1有隐藏的\0,arr3中有\0,所以他们的字符串长度为4,而arr2中没有结束标志\0,所以它会继续查找直到找到\0才会停止。

注:

如何查看监视:先将程序处于调试状态,按住ctrl+Fn+F10即可处于调试状态,在窗口栏调试里面选择窗口-监视-监视1(输入"abcd"英文字符)即可看到隐藏的\0(算一个字符)。

c60e2091616949c1863b700c19e849d7.png

 7.转义字符

转义字符是C语言中表示字符的一种特殊形式,转义字符以 \ 开头,后面跟一个字符或一个八进制或十六进制数表示。可以理解为 \ 让n的意思发生了转变,n本来是一个普通的字符,加入 \ 变为\n转义为换行的意思。

例如: 

c7a79ccf18a046dfa9c0a3d5762d23f3.png

 7.1.常见的转义字符如下图所示:

cbf02ae5825148578584218ecd708c33.png


\':用于表示字符常量';

\〃:用于表示一个字符串内部的双引号;

1fa38891dae84144bd673f89df07934d.png

\\:用于表示一个反斜杠,防止它被解释为一个转义序列符;

\t:制表符,光标移到下一个水平制表位,通常是4或者8的倍数;

          例如:想打印字符串:D:\test\tupian

5a33b298219d4a07b6a986fdc66a948e.png

\b:退格键,光标回退一个字符;

\n:换行符;

6ec65ae691884e8d8451192ba976dca8.png

 

\ddd:d d d表示1~3个八进制(1~7)的数字;

         例如:\117  \100

53552fe37cc04fa78e3ae6d9fbe33c81.png

注: \139不是三位八进制的数。

 

\xdd:d d表示2个十六进制数字(0~9 a~f)。

        例如:\x36    \x2a

1948aa33c62e42d8a1d6bd5a71ab5990.png

 

\0: null字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0。

8.语句和语句分类:

c语言的代码是由一条一条的语句构成的,c语言中的语句可分为5类:

5bd7a4f619544f5c8cf8252fd3f20a21.png

 C语言支持三种结构:顺序结构、选择结构、循环结构。

9.注释是什么?

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。

注释是给程序员自己,或者其他程序员看的。

不要过度注释,不要写没必要的注释。

9.1.注释的2种形式

C语言的注释有两种表示方法。

/**/的形式:/**/的这个注释不支持嵌套注释,/*开始注释后,遇到第一个*/就认为注释结束了。

1acaf78c9e064fe78140286d9d1c9f44.png

//的形式
是将注释放在双斜杠//后面,从双斜杠到行尾都属于注释。

这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。这是C99标准新增的语法。

注意:

不管是哪一种注释,都不能放在双引号里面。
双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用。

10.习题作业

1.下面关于C语言的编译和链接说法错误的是?

A.C语言是一门编译型计算机语言

B.写出来的C语言代码直接就可以运行的

C.C语言代码需要经过编译和链接生成可执行程序才能运行的

D.C语言代码经过编译生成目标文件,目标文件和链接库通过链接生成可执行程序

答:B

解析:C语言是一门编译型计算机语言,代码需要经过编译和链接生成可执行程序才能运行的,C语言代码经过编译生成目标文件,目标文件和链接库通过链接生成可执行程序。

2.关于集成开发环境描述错误的是?

A.集成开发环境简称IDE

B.集成开发环境一般都是将编辑、编译、链接、调试等功能集成在一起的一个开发环境

C.集成开发环境就是编译器

D.集成开发环境使用起来方便,大大提升了开发和调试的效率

答:C

解析:集成开发环境中集成了编译器,如果说集成开发环境就是编译器,过于片面。

3.关于C语言中源文件和头文件说法正确的是?

A.C语言的源文件的后缀是.cpp

B.头文件没什么用,只要有源文件就行了

C.C语言中源文件的后缀是.c,头文件的后缀是.h

D.C语言的源文件可以没有后缀

答:c

解析:很多C语言编译器就是通过文件的后缀来区分是源文件还是头文件的,一般都是要明确的写出文件后缀的,头文件的后缀是.h,是header的意思,源文件的后缀是.c,在稍微复杂的C语言程序中,头文件是很有必要的,一般是用来函数声明、类型声明等。

4.C语言规定,在一个源程序中,main函数的位置( )

A.必须在最开始

B.必须在库函数的后面

C.可以任意

D.必须在最后

答:c

解析:main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。

5.关于main函数错误的是?

A.main函数是程序的入口

B.一个C语言程序中可以写多个main函数

C.main函数的名字是可以随便改的,比如:mian

D.main函数的名字是固定的,一个工程中,有且仅有一个main函数

答:B

解析:一个C语言程序中的main函数,有且仅有一个。main函数的名字是固定的,编译器以main函数作为程序的入口,程序是从main函数的第一行开始执行的。

6.printf和库函数描述错误的是?

A.printf是库函数,不需要包含头文件就可以使用

B.库函数是C语言标准约定的,由各个C语言编译器的厂商实现的,所以各个编译器的库函数使用和功能是一样的,但是内部实现是有差异的。

C.printf函数是用来在标准输出上打印格式化的信息的

D.printf函数打印字符使用%c,打印整数使用%d指定格式

答:A

解析:printf是库函数,必须含头文件才能正确使用。

7.下面哪个不是关键字:( )

A.int

B.struct

C.define

D.continue

答:C

解析:C语言关键字:C语言定义的,具有特定含义、专门用于特殊用途的C语言标识符,也称为保留字define不是关键字,是编译器实现的,用来定义宏的预处理指令,不是C语言中的内容。 int、struct和continue都是C语言中包含的关键字。

8.用在switch语言中的关键字不包含哪个?( )

A.continue

B.break

C.default

D.case

答:A

解析:switch是用来进行多分支选择的语句,一般结构是:

  switch(变量表达式)

  {

    case xx1:

     // ...

     break;

    case xx2

     // ...

     break;

    default:

      // ...

  }

当变量表达式的内容与某个case后的常量相等后,就执行该case下的语句,break表示该case以后的内容不会执行,如果没有跟break,会继续执行当前case之后的case分支。当变量表达式的内容没有与那个case匹配,就会执行default下的内容。switch中常用的关键字:case 、break、 default,当然case中语句比较复杂时,可能会用if进行判断。continue是用来结束本次循环的,而switch不是循环,因此其中不能使用continue关键字。

9.关于C语言关键字说法正确的是:( )

A.关键字可以自己创建

B.关键字不能自己创建

C.关键字可以做变量名

D.typedef不是关键字

答案:B

解析:C语言关键字:C语言定义的,具有特定含义、专门用于特殊用途的C语言标识符,也称为保留字。 A:错误,关键字是语言自身定义的。C:错误,关键字具有特殊含义,不能作为变量名。 D:错误,typedef是用来给类型取别名的关键字。

10.关于字符的ASCII编码错误的是?

A.小写字母的ASCII码值+32就能得到对应的大写字母的ASCII码值

B.ASCII码值从0~31 这32个字符是非打印控制字符,在界面上不显示任何东西,比如:蜂鸣、回车、换行

C.数字字符0~9的ASCII码值是连续递增的

D.最初ASCII编码中只有128个字符的编码

答案:A

解析:小写字母的ASCII码值-32就能得到对应的大写字母的ASCII码值。

小写字母的ASCII码值比对应的大写字母的ASCII码值更大的。

11.字符串的结束标志是:( )

A.是'0'

B.是EOF

C. 是'\0'

D.是空格

答案:C

解析:C语言规定:以'\0'作为有效字符串的结尾标记。A:错误,是'\0'不是字符0。B:EOF一般用来作为检测文本文件的末尾。

12.下面代码的结果是:( )

3e1c939b23d847aabd7e7ed1ea5c46ac.png

A.3

B.4

C.随机值

D.5

答案:C

解析:strlen是用来获取字符串的有效长度的,结尾标记'\0'不包含在内。strlen获取的规则非常简单:从前往后依次检测,直到遇到'\0'是就终止检测。而上题中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置'\0',因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到'\0'是才终止,因此答案为不确定,就看紧跟在't'之后的第一个'\0'在什么位置。

13.下面那个不是转义字符?

A.'\n'

B.'\060'

C.'\q'

D.'\b'

答案:C

解析:A:'\n' 转义字符,代表换行。B:'\060' 转义字符,060八进制数据,十进制为48,表示ASCII码为48的'0'。C:'\q' 什么都不是。D:'\b' 转义字符,表示退格。

14.下面程序的结果是:( )

24f08bc1135140e2bf56127448818b84.png

A.7

B.8

C.9

D.10

答案:A

解析:strlen:获取字符串的有效长度,不包括'\0'。"c:\test\121": 在该字符串中,\t是转移字符,水平制表,跳到下一个tab的位置;而\121表示一个字符,是讲121看做8进制数组,转换为10进制后的81,作业为ASCII码值的字符,即:字符'Q' ,故上述字符串实际为:"c:  estQ",只有7个有效字符。

 

  • 30
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值