一、初识C语言
1.C语言的起源
2.C语言的基本结构
3.C语言的特点
二、基本数据类型和运算符
1.数据类型
2.标识符、常量与变量
3.运算符和表达式
4.常用的内部函数
三、C语言基础
1.头文件
2.printf和库函数
3.什么是库函数?
4.关键字
5.字符和ASCII编码
6.字符串和\0
7.转义字符
8.两个特殊的转义字符
四、语句和语句分类
1.空语句
2.表达式语句
3.函数调用语句
4.复合语句
5.控制语句
五、注释
1.注释是什么?为什么要写注释?
2.注释的两种形式
3.注释会被替换
前言:本系列文章为小生的学习笔记,在此撰写一为巩固所学知识;二为提高自己的文字表达能力;三为分享自己的学习过程及心得,希望能带给阅读本篇文章的学友们一点点帮助。本人所学尚浅,正在努力中,有什么不足的地方诚请多多指教,感谢阅读。
本系列文章中使用的是vs2022集成开发环境。
一、初识C语言
1.C语言的起源
C语言是什么?
在日常生活中,我们人与人交流使用的汉语、英语、日语等是属于我们人与人之间的语言。无论哪种语言它都是有规定的,有一套独属于它的标准,这让我们人与人之间可以交流思想、想法和信息。同样的,人与计算机交流的过程中也需要规定一套标准的语言,即计算机语言,也叫机器语言,C语言就是一门计算机语言。计算机语言还有很多种,例如:Python \ Java \ C++ \ Go等,在C语言诞生的这么长时间里,它一直都是非常主流的计算机语言。
C语言是由贝尔实验室的Dennis Ritchie在20世纪70年代开发的一种通用编程语言。它起源于贝尔实验室的B语言,并在1972年至1973年之间由Dennis Ritchie和Brian Kernighan对B语言进行了重写和改进,最终诞生了C语言。C语言被设计成一种能够方便地编写系统软件的语言,因此在操作系统、编译器、网络驱动等领域得到了广泛应用。C语言的设计思想影响了许多后来的编程语言,如C++、Objective-C、Java等。
2.C语言的基本结构
一个c程序,不管它是复杂还是简单,都必须有且只有一个主函数,主程序从main函数开始执行,直到main函数结束为止。例如:
我们现在用的基本都是这种写法。
值得一提的是,友友们可能还见过不一样的写法,例如:
这是一种很古老的写法,现在我们基本不用。
3.C语言的特点
C语言是一种结构化的编程语言,极具生命力,它拥有简洁、紧凑、使用方便、灵活、表达能力强、数据结构丰富、生成目标代码质量高、程序执行效率高、可移植性好等等优秀的特点,使它成为当今最流行的编程语言之一。
二、基本数据类型和运算符
1.数据类型
1.1整型
基本整型 int
短整型 short 或 short int
长整型 long 或 long int
无符号基本整型 unsigned int
无符号短整型 unsigned short 或 unsigned short int
无符号长整型 unsigned long 或 unsigned long int
1.2实型
单精度 (float) 有效数字 7位
双精度 (double) 有效数字 16位
2.标识符、常量与变量
2.1标识符
标识符是指程序中的变量、符号常量、数组、函数、类型、文件等对象的名字。标识符有自己的命名规则,在C语言中,标识符只能由字母、数字和下划线组成,且第一个字母必须为字母或下划线。
C语言中大小写字母是敏感的,例如:Str 和 str 是两个不同的变量名。
标识符(变量名)不能使用系统关键字,因为关键字是系统的保留字,它们已经有特定的含义。
2.2常量
常量是指在程序运行过程中其值不能被改变的量。 常量可以分为直接常量和符号常量,其中直接常量包括:整型常量、实型常量、字符常量、字符串常量。
其中,有一种特殊的常量叫做符号常量。符号常量就是使用符号代表常量,C语言中允许使用标识符定义一个常量,这种常量定义在C语言中被称为 “宏定义” ,其一般形式为:
#define 标识符 常量、
其中#define是一条预处理命令,成为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上,符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。这里我们只浅显的了解,更多后面再细说。
2.3变量及变量的定义和赋值
变量是指在程序运行过程中其值可以被改变的量。一个变量有3个相关的要素:变量名、变量的数据类型、变量(存储单元存放)的值。
程序中使用的所有变量都必须先定义,然后才能被使用。可以在变量的声明语句中同时定义变量和初始化,即赋初值。
3.运算符和表达式
运算符:
3.1. 算术运算符:用于执行基本的数学运算,如加法(+)、减法(-)、乘法(*)、除法(/)、取模(%)等。
3.2. 关系运算符:用于比较两个值的关系,如相等(==)、不相等(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等。
关系运算符的结果为:1 或 0。
3.3. 逻辑运算符:用于执行逻辑运算,如逻辑与(&&)、逻辑或(||)、逻辑非(!)等。
特别的,在C语言中,非 0 即为真。
3.4. 位运算符:用于对二进制位进行操作,如按位与(&)、按位或(|)、按位取反(~)、按位异或(^)、左移(<<)、右移(>>)等。
3.5. 赋值运算符:用于给变量赋值,如赋值(=)、加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)、取模赋值(%=)等。
3.6. 条件运算符:用于根据条件选择不同的值,如三目运算符(?:)。
3.7. 逗号运算符:用于在表达式中使用逗号分隔多个子表达式,整个表达式的值为最后一个子表达式的值。
3.8. sizeof运算符:用于获取数据类型或变量的大小,返回值为该数据类型或变量所占内存空间的大小。
3.9. 指针运算符:用于对指针进行操作,如取地址(&)、间接引用(*)等。
3.10. 递增和递减运算符:用于增加或减少变量的值,如递增(++)、递减(--)。
3.11. 成员访问运算符:用于访问结构体或联合体的成员,如点运算符(.)、箭头运算符(->)。
3.12. 位字段运算符:用于对结构体中的位字段进行操作,如按位与(&)、按位或(|)、按位取反(~)、按位异或(^)等。
3.13 自增、自减运算符
i++、i-- //表示在使用 i 值之后将 i 的值加(减)1
++i、--i //表示在使用 i 值之前将 i 的值加(减)1
表达式:
对数学上的表达式和C语言程序中的表达式做一个对比,其书写规则如下:
3.14 乘号用 * 表示,这点对于初学者来说很容易忽略;
3.15 表达式从左到右在同一基准上书写,无高低、大小之分,都写在同一行上;
3.16 括号必须成对出现,切都用圆括号。
4.常用的内部函数
在使用C语言进行编程时,许多很基本和很重要的功能都可以由系统的库函数和类库来实现。
sqrt(x) 计算x的平方根,x应大于或等于0
pow(x,y) 计算x的y次方
abs(x) 计算x的绝对值,x为整数
fabs(x) 计算x的绝对值,x为实数
以上函数的头文件均为: <math.h>
上四个函数是我们常用的内部函数,类似的函数还有很多,我们就不过多罗列了。
三、C语言基础
1.头文件
C语言头文件是一种特殊的文件,通常以'.h'为扩展名,用于包含函数声明、宏定义、结构体定义等内容。C语言头文件的作用是提供接口和声明,使得在一个源文件中可以使用另一个源文件中定义的函数、变量等内容,从而实现模块化开发和代码重用。
在C语言中,头文件通常包含在源文件中,以便在编译时将其内容包含到源文件中,以便编译器能够识别其中声明的函数、变量等。通过包含合适的头文件,可以避免重复定义、提供函数原型、引入标准库函数等。
头文件的作用类似于,比如我们想借某人的东西用一下,我们就需要给他打个招呼,头文件的作用亦是如此。
头文件的使用规则为:<头文件> 。我们常用的头文件有:
2.printf和库函数
在这里,我们来写第一个C语言程序。
我们写了printf这个函数,它是C语言标准库中提供的一个现成的函数,其作用是在屏幕上打印信息。我们来使用起来:
3.什么是库函数?
库函数是一组预先编写好的函数,可以在程序中被调用来完成特定的任务。这些函数通常被组织在库文件中,程序员可以在自己的代码中引用这些库函数,而不必重新实现这些功能。库函数可以帮助程序员简化开发过程,提高代码的复用性和可维护性。常见的库函数包括数学函数、字符串处理函数、文件操作函数等。
库函数极大地方便了程序员,避免了大多数需要重复写的代码。
使用库函数时,应清楚四个方面的内容:
3.1函数的功能及所能实现的操作;
3.2参数的数目和顺序,以及每个参数的意义及类型;
3.3返回值的意义及类型;
3.4需要使用的包含文件。
4.关键字
C语言中有一批保留名字的符号,比如:int 、 if 、 return等。这些符号被称为保留字或关键字。
--关键字都有特殊意义,是保留给C语言使用的
--程序员在创建标识符的时候是不能与关键字重复的
--关键字是规定的,不能自己创造
C语言的32个关键字如下:
1. auto 2. break 3. case 4. char 5. const 6. continue 7. default 8. do 9. double 10. else 11. enum 12. extern 13. float 14. for 15. goto 16. if 17. int 18. long 19. register 20. return 21. short 22. signed 23. sizeof 24. static 25. struct 26. switch 27. typedef 28. union 29. unsigned 30. void 31. volatile 32. while
5.字符和ASCII编码
在键盘上我们可以输出:@、a、%、j、!等,这些符号都被称为字符,C语言中字符是用单引号括起来的。
众所周知,计算机中所有的数据都是以二进制的形式存储的,那么这些字符在内存中分别以什么样的二进制存储的呢?美国国家标准学会出台了一个标准ASCII编码,C语言中的字符就遵循了ASCII编码的方式。
我们来简单使用感受一下:
6.字符串和\0
使用双引号括起来的一串字符叫做字符串,例如:“haohaoxuexi”。字符串可以用%s来打印,也可以直接打印,我们上面已经实现过。
C语言字符串中有一个特殊的知识,就是在字符串的末尾隐藏存放着一个字符\0,这个\0字符是字符串的结束标志。
我们来看下面这些更直观的现象:
为什么会出现这样的现象呢?我们说过字符\0是字符串的结束标志,而arr1中有\0,当我们打印arr1的时候,计算机读到\0后就停止了,所以,最终在屏幕上打印出了abcdef。而arr2中没有\0,当我们打印arr2的时候,计算机读完abcdef后因没有读到字符\0,所以就会一直读下去,直到找到\0才结束,屏幕上就会显示一些乱码。
7.转义字符
转义字符,顾名思义就是转变原本意思的一些字符。常见有:
1. \n - 换行
2. \t - 水平制表符
3. \r - 回车
4. \\ - 反斜杠
5. \' - 单引号
6. \" - 双引号
7. \0 - 空字符
8. \a - 响铃
9. \b - 退格
10. \f - 换页
11. \v - 垂直制表符
这么说可能不好理解,我们还是来直观地感受一下。
另外,友友们可能对 5. \' - 单引号 6. \" - 双引号 这两个有点疑惑,我们来看:
还有 4. \\ - 反斜杠,它的作用是转义转义字符,让转义字符能以它们本来的样子打印在屏幕上。
8.两个特殊的转义字符:
\ddd: d d d 表示1~3个八进制数字,例如:\130 ,表示字符 x
\xdd: d d 表示两个十六进制数字,例如:\x30 ,表示字符 0
转义字符就是一个字符。
我们还是通过代码实验来理解这句话:
这里友友们可能又有疑惑,为什么第二个字符串的长度是9,而第三个字符串的长度是10呢?这是因为我们上面说过,\ddd:d d d 表示1~3个八进制数字,而八进制里没有8这个数字,所以第三个字符串中 \12 才是一个完整的字符。
四、语句和语句分类
1.空语句
空语句是最简单的,一个分号就是一条语句,即空语句。
空语句,一般出现的地方是:这里需要一条语句,但是这个语句不需要做任何事,就可以写一个空语句。
2.表达式语句
表达式语句就是在表达式的后面加上分号。
3.函数调用语句
函数调用的时候,也会加上分号,就是函数调用语句。使用库函数也是函数调用。
4.复合语句
复合语句其实就是代码块,成对括号中的代码就构成一个代码块,也叫做复合语句。例如:
5.控制语句
C语言是一种结构化的程序设计语言。
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构和循环结构),它们由特定的语句定义符组成,C语言中有9种控制语句。
有如下三类:
5.1条件判断语句也叫分支语句:if 语句、switch语句;
5.2循环执行语句:do while 语句、while 语句、for语句;
5.3转向语句:break语句、goto 语句、continue语句、return语句。
这里我们先浅显的了解一下,具体如何使用有什么作用后续再探索。
五、注释
1.注释是什么?为什么要写注释?
注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。注释是给程序员自己或其他程序员看的,好的注释可以帮助我们更好的理解代码,但是也不要过度注释。写注释一定程度上反映了程序员的素质,我们都要养成良好的习惯。
2.注释的两种形式
2.1第一种是将需要注释的代码放在 /*.......*/ 之间,内部可以分行
这种注释可以插在行内。
上面示例中,/*file name*/用来函数参数进行说明,跟在它后面的代码依然有效执行。这种注释一定不能忘记写结束符号 */ ,否则很容易导致错误。
注意,这种注释方式有一点不足。
这种注释方式不支持嵌套,我们还是通过代码演示来体会这句话:
2.2第二种是将需要注释的代码放在 // 后面
这种注释从双斜杠到行尾都属于注释,这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。
不管是哪一种注释,都不能放在双引号里面。双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释功能。
上面示例中,双引号里面的注释符号,都会被视为普通符号,没有注释作用。
3.注释会被替换
编译时,注释会被替换成一个空格,所以hello/*这里是注释*/world会变成hello world,而不是helloworld。
标签:语句,注释,常量,C语言,运算符,初出茅庐,库函数 From: https://blog.csdn.net/2301_78843337/article/details/137104021