大家好,我是Summer歆

以后我将在CSDN分享我的编程学习日常,由于我还是一只小白,难免有错误与不周之处,希望读者能够指出,与大家一起进步。这是我的第一遍博客,文笔可能比较差,但是一字一句都是我对知识的理解整合。

此篇文章是对C语言的囊括,简单的介绍一下每个知识点,意在让读者初步认识C语言,形成基本的框架。后续我会发布文章深化每一个知识点。接下来让我们从什么是C语言说起。

一. 什么是C语言

C语言是人和计算机交流的一种计算机语言,是众多计算机语言中的一种,是基于B语言重新设计的一种新语言。

C生万物,编程之本。C语言发展至今依旧在计算机体系中占据着不可替代的位置,常年霸榜tiobe前三名,像嵌入式开发、操作系统开发、游戏引擎开发、音视频编解码等领域都要用到C语言。这都归功于C语言执行高效,引入指针等特点。

二. 第一个C语言程序

#include //头文件int main()//程序的入口{printf("Hello,C语言!"); //在屏幕上打印:Hello,C语言!return 0; //返回值为0}

1.编译预处理命令

#include是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,都是以“#”开头并且不用分号结尾。尖括号里的stdio.h=standardinputoutput.header。叫做标准输入输出头文件。它是一个标准库,里面有很多常见的功能,我们只需要引用它就能使用它的全部功能。

2.主函数main

main是主函数,C语言的程序都是从main函数的第一行开始执行的,它是一个程序的入口,需要注意的是main函数在一个工程中有且仅有一个,标准的C语言程序要在main函数前面给定返回值类型,如上述代码返回值类型为int(整型)。

3.printf和库函数

printf是一个库函数,它的功能是在屏幕上进行信息的打印。只要把想打印的信息放在双引号里面并传送给printf函数就能进行打印。那么什么是库函数呢?大白话讲就是将一些常见重复的代码封装起来供程序员使用以提高开发效率。

4.返回值

return表示返回值,它必须与返回值类型相对应。如上述代码返回值类型为int(整型),所以返回值必须是一个整数0(至于为什么不是其他整数而是0,那只能说是约定熟成)。

5.初学常见错误

1.把main写成mian
2.把main后面的()漏掉
3.把英文符号用成中文符号
4.一条语句结束后漏掉分号

三. 数据类型

1.分类

int //整型 //4short //短整型 //2long//长整型 //4long long //更长的整型 //8float //单精度浮点型 //4double//双精度浮点型 //8char//字符型 //1

为了更加丰富的表达生活中的各种值,C语言产生了许多数据类型,可以分成四大类:整型、浮点型、字符型、指针型,以上是几种常见的数据类型以及字节大小。如果我们忘了它的字节(所占内存大小的单位)大小怎么办呢?

2.字节计算

#includeint main(){ printf("%d\n",sizeof(char)); return 0;}

通过编写以上代码就可以实现sizeof后括号内数据类型的字节大小的计算。

3.数据类型的使用

int a = 0;char ch = Summer;float PI=3.14;

格式: 变量类型 变量名 = 初始化值

看到上面的格式我想问一下大家什么是变量名以及我们为什么要初始化。相信大家心中已经有了答案:初始化是为了防止脏数据赋值在我们新建立的变量上,变量名就是指一个变量的名字,也叫标识符。那么问题就变成了什么是变量。让我们继续!(值得一提的是C语言中的“=”是赋值的意思,并不等同于数学中的等号。)

四. 变量与常量

生活中有些值(并不局限于数值)是不会改变的,也有些值是会改变的,在C语言中,我们将在程序中不会改变的量称为常量,在程序中会改变的量称之为变量。

1.变量的命名

变量的命名归纳下来有5点要求

1).只能由数字,字母,下划线组成。

2).不能以数字开头。

3).变量名不得超过63个字符。

4).变量名区分大小写。

5).变量名不得与关键字冲突。(疑问又产生了:何为关键字,待会我将与大家介绍)

2.分类

1)常量的分类

整型常量:整数(0,1,-1,0A5)

实型常量:1.十进制小数

2.指数形式

字符型常量:1.a,B,c,’1′,’2′(数字要用单引号)

2.转义字符:\n(换行) \t(水平制表符) \o(八进制) ….待补充

3 字符串常量:双引号引起 “abc” “123”

符号常量:用#define指令指用 一改全改

地址常量:每个常量,变量,数组在程序运行中的位置是不能改变的,叫做地址常量

2)变量的分类

局部变量与全局变量:局部变量是只能在局部使用的变量,有范围限制;全局变量是指在整个工程中都能使用的变量。

#includeint main()int a = 10;//全局变量{int b = 10;//局部变量return 0;}

五. 关键字

autobreak casecharconst continuedefaultdo double elseenum extern floatfor gotoif int longregisterreturn shortsignedsizeof static structswitchtypedef unionunsigned voidvolatilewhile

C语言中有32个关键字,这些关键字是语言本身预先设定好的,用于行使不同的功能。至于它们的用法及功能我将在以后为大家揭晓。

六. 转义字符

转义字符就是转变了原本字面意思而具有特殊意义的一类字符。就如“\n”就不再是原本字面文本意思,而是变成了换行的意思。常见的转义字符如下表:

字符形式

含义
\n换行,将当前位置移到下一行开头
\t水平制表符(跳到下一个tab位置)
\b退格,将当前位置移到前一列
\r回车,将当前位置移到本行开头
\f换页,将当前位置移到下页开头
\a响铃
\\反斜杠字符
\’单引号字符
\”双引号字符

七. 运算符

运算符又叫操作符,是指对一个或多个变量进行操作的符号。运算符分为9类:算术运算符、自增自减运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、逗号运算符、条件运算符以及sizeof运算符。这里我将简单罗列出这些运算符,具体用法将在后面的文章中介绍。

1.算数运算符

2.自增自减运算符

3.关系运算符

4.逻辑运算符

5.位运算符

6.赋值运算符

7.逗号运算符

8.条件运算符

9.sizeof运算符: 计算操作数的类型长度

八. 分支语句

1.if语句

if的英文翻译是如果,这很好理解:如果满足判断条件就执行花括号里面的语句。代码格式如下:

if(判断条件){ 执行语句;}

这里要注意的是在第一行代码“if(判断条件)”后面并没有分号,这是很多初学者容易犯的错误。另外,即使if后面只有一条执行语句我们也要将他用花括号括起来,这可以增加代码的可读性与可维护性。上面代码满足条件时会执行指定语句,不满足条件则跳过,那我们想让它在不满足判断条件时也有指定的执行语句我们该怎么做呢?这就引入了if …else语句。代码如下:

if(判断条件){执行语句1;}else{执行语句2;}

代码意思是如果满足判断条件就执行语句1,如果不满足判断条件就执行语句2。

将上述代码再次升级:如果我们有多个判断条件,我们要将每个条件逐一判断并执行相应的语句,C语言便引入了if…else if….else语句。代码如下:

if(判断条件1){执行语句1;}else if(判断条件2){执行语句2;}else{执行语句3;}

代码意思是:如果判断条件1成立则执行语句1,不成立则判断表条件2是否成立,如果表达式2成立则执行语句2,不成立则执行语句3。else if并不局限于只有一个,也就是说我们可以对多个判断条件逐一判断。当然if语句也可以嵌套使用。我将会在后面的专题中介绍。

2.switch语句

switch语句也是一种分支语句,代码如下:

switch(常量表达式){case 1:语句1;case 2:语句2;break;case 3:语句3;break;default:语句4;}

在一个并联灯泡系统中,每个灯泡都有对应的开关,按下开关1,灯泡1就会亮起,按下其他开关其他灯泡就会亮起。switch语句执行方式也与之类似,当常量表达式为1的时候,就会执行case 1对应的语句,当没有常量表达式与case语句对应的时候,就执行default对应的语句4。但swtich语句与之也有不同之处,细心的读者会发现在语句1的后面不同于语句2语句3:它没有break语句。这是因为switch语句的操作系统从上往下运行,若控制语句1执行,那么其后面的也会执行,需要用break语句阻断。当然,switch语句也是可以嵌套的,这个后续会讲到。

九. 循环语句

循环语句一共有3种常见形式:for语句,while语句,do…while语句。接下来将对这三种语句进行简单的阐述。

1.for语句

for语句的基本结构如下

for(初始表达式;判断表达式;改变表达式){执行语句块;}

for语句的执行流程是:

1.执行初始表达式,初始表达式只会在第一次循环中被使用,之后不会再执行。

2.接着程序会执判断表达式,如果为真则执行语句块。

3.在执行完语句块后执行改变表达式,使判断表达式趋于不成立.

4.重复步骤2与步骤3,最后跳出for循环。

2.while语句

使用while语句也可以执行循环结构,形式如下:

while(判断表达式){语句块;}

执行步骤也很简单: 如果判断表达式成立则执行语句块,完成后继续跳回,无限循环,可以附加语句使判断表达式不成立,跳出循环。

3.do…while语句

do{语句块;}while(判断表达式)

do…while语句与while语句类似,不同之处是不管如何都会执行一次do后面的语句块,在进行判断表达式看其是否成立,成立则跳回语句块,不成立则跳出循环。

后言

写到这已经是血脉翻涌,按耐不住心中的躁动。第一次写博客其实还是怀揣着一丝丝小激动,计划把C语言所有内容写完并附一张思维导图,但后续的知识我在学校学得也是比较水,本着对自己说的话负责的态度,我就不在这当无良军师了。等过段时间学成归来我再补上数组,函数,指针等内容,并双手奉上一张思维导图。请大家多多关注!