一、C语言常见概念

目录

1.C语言是什么

2.C语言的发展历史 

3.编译器的选择 

3.1编译和链接 

 3.2编译器的对比

 4.VS的使用

 5.第一个C语言程序

5.1 main函数 

5.2 printf和库函数 

6.关键字 

7.字符和ASCII编码 

8.字符串和\0 

9.转义字符 

10.语句和语句分类 

10.1 空语句 

10.2 表达式语句 

10.3 函数调用语句 

10.4 复合语句 

10.5 控制语句 

11.注释 

11.1 /**/的形式

11.2 //的注释形式 


1.C语言是什么

在日常生活中,我们人和人之间是通过自然语言来交流的,例如汉语、英语、日语等。如果希望计算机帮助我们做一些事情,就需要和计算机进行交流,那么人和计算机时怎么交流的呢,答案就是:使用计算机语言。目前已知的计算机语言有上千种,例如:C/C++/Java/Go/Python等,人们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的

2.C语言的发展历史 

C语言最初是作为Unix系统的开发工具而发明的。1969年,贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了Unix操作系统 。Unix是用汇编语言写的,为了移植到其他计算机,汤普森就是BCPL语言的基础上发明了B语言。1972年,丹尼斯·里奇和布莱恩·柯林汉(Brian Kernighan)又在B语言的基础上重新设计了一种新语言,这种新语言取代了B语言,所以称为C语言。整个Unix系统都使用C语言重写。此后,这种语言开始快速流传,广泛用于各种操作系统和系统软件的开发。到了1988年,美国国家标准协会(ANSI)正式将C语言标准化,标志着C语言开始稳定和规范化,一直到今天C语言还是在广泛的使用,在计算机语言的排行榜上霸占前三名。

3.编译器的选择 

  3.1编译和链接 

 C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制可执行文件才能执行。C语言代码是放在 .c 为后缀的文件中的,要得到最终运行的可执行程序,中间要经过编译和链接两个过程

 

一个工程一般都会有多个源文件组成,如下图所示,演示了源程序经过编译器和连接器处理的过程(了解即可,后续会详细说明) 

 

   3.2编译器的对比

C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令。我们常见的编译器有:msvc、clang、gcc等,当然也有一些集成开发环境,例如:VS2022、XCode(mac系统)、CodeBlocks、DevC++、Clion等

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

 4.VS的使用

想要在VS2022上写代码,我们是需要创建项目,首先点击桌面的VS图标,打开软件,点击创建新建项目

 

 之后点击空项目,输入项目名称,并且指定存放位置

 创建完成之后会进入如下页面

 

右键点击源文件-->添加-->新建项,创建.c文件,如下图所示

创建完成之后,就可以开始编写代码了,如下图所示 

 5.第一个C语言程序

如图,使用C语言代码实现在屏幕上打印Hello World。 

 

下面会详细解释一下这段代码

  5.1 main函数 

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

注:①main函数是程序的入口

       ②main函数有且仅有一个

       ③即使一个项目中有多个.c文件,但只能有一个main函数,因为程序的入口只能有一个。

       ④main函数不能拼写错误

  5.2 printf和库函数 

上面的代码中有一句代码:printf("Hello World\n");  ---- 代码中使用printf函数,实现了在屏幕上的信息打印。printf是一个库函数,它的功能是在标准输出设备上进行信息的打印。printf也可以用来打印其他类型的数据,例如:

这里的%d、%c、%f是占位符,会被逗号后面的值替换。

同时,在使用库函数的时候,是需要包含头文件的,比如要使用printf库函数,就需要包含stdio.h这个头文件,具体代码为:#include<stdio.h>,其中std代表standard(标准),i代表input(输入),o代表output(输出)。

那么什么是库函数呢?为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用,这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数,一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用要包含对应的头文件。

6.关键字 

C语言中有一批保留的名字的符号,例如:int,if,for等等,这些符号被称为保留字或者关键字,C语言的32个关键字如下图 

注:①关键字有特殊的意义,是保留给C语言使用的

       ②程序员自己在创建标识符的时候是不能和关键字重复的

       ③关键字也是不能自己创建的 

7.字符和ASCII编码 

我们在键盘上可以敲出各种字符,例如:啊a,b,c,@,#等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:'a','b','@'。

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

我们不需要把上表中的每一个字符编码都记下来,只需掌握几组特殊的,其余使用时查看即可。如:A~Z的ASCII码值从65~95。a~z的ASCII码值从97~122

在程序中,单个字符的打印可使用%c来指定格式,如图所示 

8.字符串和\0 

在C语言中,使用双引号括起来的一串字符就被称为字符串,例如:"Hello World",就是一个字符串,字符串的打印格式可以用%s来指定

C语言的字符串中有一个特殊的知识,就是:字符串的末尾隐藏放着一个\0字符,\0字符是字符串的结束标志,可以通过调试窗口来观察(先了解即可,后续会介绍调试)

对于这段代码,字符串"abcdef"中,我们实际上只看到了6个字符,但实际上末尾还隐藏着一个\0的转义字符,所以我们在使用printf打印字符串的时候,遇到\0的时候就自动停止了

C语言中也可以把一个字符放在一个字符数组中,我们利用下面的代码验证一个\0的功能

我们看到了arr1数组在打印的时候,除了abc,后面还出现了一堆乱码,这就是arr1在末尾的地方没有\0字符作为结束标志,所以printf在打印的时候就找不到末尾位置,一直往后找。

但是arr2的打印就是完全正常的,因为arr2数组是使用字符串常量初始化的,字符串末尾隐藏着一个\0,打印可以正常停止。要想让arr1也正常打印,只需要在数组中单独存放一个'\0',如图

通过以上例子,可以直观的观察到\0的作用 

9.转义字符 

也许在前面的代码中看到 \n、\0不理解这是什么,其实在字符中有一组特殊的字符是转义字符,转义字符的意思就是:转变原来的意思的字符

例如:字符串中的一个字符n,在打印的时候能够很自然的打印出这个字符,如图

如果修改一下代码,将n改为\n,则代码输入结果变为 

我们可以看到,修改前后的代码打印结果是完全不同的,这个就是转义字符的问题。

\n是一个转义字符,表示换行的意思,可以简单理解为 \ 让 n 的意思发生了转变,n本来是个普通的字符,被 \ 转义为了换行的意思。

C语言中像这样的转义字符还有一些,如下: 

这些转义字符可通过代码自行验证。

下面来看一个练习题:

思考一下这段代码会在屏幕上输出什么呢?可能会算出各种各样的答案,来看看程序执行结果 

 

为什么会输出16呢,因为转义字符也算是一个字符,这里最容易出错的点就是 \114,可能会误认为\1是一个字符,1是一个字符,4是一个字符,那这样就错了,前面说过,\ddd这是一个字符的八进制表示形式,所以这整体是算一个字符的。 

10.语句和语句分类 

C语言代码是由一条一条的语句构成的,可分为以下几类 

  10.1 空语句 

空语句就是什么都不执行,一个分号就是一条空语句,如图

 

  10.2 表达式语句 

表达式语句就是在表达式的后面加上分号,如图 

  10.3 函数调用语句 

在进行函数调用的时候,也会在语句后面加上分号,就是函数调用语句,如图

  10.4 复合语句 

复合语句就是一个代码块,成对的中括号中的代码就构成一个代码块,也被称为复合语句 ,如图

了解复合语句概念即可,暂时不用关心代码功能 

  10.5 控制语句 

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(顺序结构、选择结构、循环结构)。后续详细介绍 

11.注释 

注释是对代码的解释说明,编译器会忽略注释,注释对实际代码没有影响。注释是给自己或者其他程序员看的,能够帮助自己和他人理解代码。C语言中注释有两种形式

  11.1 /**/的形式

这种方法是将注释放在/*    */之间的,内部可以分行,如图 

注:这种方法不支持嵌套注释,/* 开始注释后,遇到第一个*/ 就认为注释结束了. 

  11.2 //的注释形式 

这种写法是将注释放在双斜杠 // 的后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在行尾,这是C99标准新增的语法。如图 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值