【C语言】C语言成长之路之入门级C语言思维导图的建立◕‿◕

今日小诗:

   🍀 《我曾七次鄙视自己的灵魂》🍀

                                                                                                       作者: 纪伯伦

  第一次,当它本可进取时,却故作谦卑;

  第二次,当它在空虚时,用爱欲来填充;

  第三次,在困难和容易之间,它选择了容易;

  第四次,它犯了错,却借由别人也会犯错来宽慰自己;

  第五次,它因为软弱而忍让,却坚称为自己的坚韧时;

  第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;

  第七次,当它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。

   

        从这篇文章开始,小狮子会不定地在今后的文章中加入一些分享小诗的模块,分享最近小狮子读过的一些小诗,希望大家在学习编程的同时也不要失去对自己品格的修养和对生活的热爱,谢谢大家能看我的文章!💕

       ⭐️大家好!今天小狮子为大家带来了一篇关于我最近完成的C语言基础知识梳理的文章。经过两个月的初阶C语言学习,小狮子终于摆脱了看C语言代码就两眼一黑的状态,也算是小有所成,所以在这篇博客中记录我的成长的同时,也算为大家梳理一下初阶C语言的知识点,希望大家能够喜欢。

        小狮子这里将初阶的C语言学习分为这六个模块:数据类型、分支与循环、函数、初级指针、表达式相关、编码及调试

 7f36d7f8487d4d1b9ddc531ed29db9cf.png

一、数据类型

思维导图:

1c2cf48a100249ff8d62f2f9cd276f9f.png

       我将C语言中的数据类型模块分为这几个部分,接下来我们一个个来聊初阶C语言中的数据类型相关知识。

1. C语言中的基础数据类型

254789cc58e14c64af4d3376630b557a.png

       基础的数据类型大致有这些分类,其中主要分为整型,浮点型,字符型三大类数据类型。

       1)整型数据以 int 类型为本,可以在 int 类型前加上 long short unsigned 这些前缀作为修饰,改变整型数据表示数的范围。这些用于修饰整型的前缀被称为类型说明符,分别说明整型的长度和符号。

整型符号相关:

0e55f20a336a48cb95e0627bf54092c6.png

       2)浮点数与整型数据的存储方式不太相同,它用于表示小数(浮点数)。

2. 自定义数据类型

cf4e96eb9b0b428aa4dbd4d4b8cf7d2a.png

       C语言中的自定义数据类型共有以上的几种,这里初阶C语言主要是介绍前两种自定义数据类型:数组、结构体。

1)数组 

思维导图:

723aa90f6d6040cc8413ff3653823952.png

       数组就是一种由许多同类型元素从低地址到高地址排列产生的集合类型,可以固定它的大小也可以在初始化的时候输入所有元素以确定数组大小。

       数组名本质上是一个指向数组首元素的指针,通过数组名,我们可以访问数组中的各个元素。

	int arr1[50] = { 1,2,3,4,5 };
	//这种初始化确定了数组的元素个数为50个,初始化了前五个元素
	int arr2[] = { 1,2,3,4,5 };
	//这种初始化数组的方式使数组元素数量固定为输入时的元素个数
	char str1[100] = "Hello world!";
	//字符串数组的初始化,会直接在后方加上'\0',数组大小的固定方式与上述相同
	char str2[] = "Hello world!";

2)结构体

思维导图:0e3a25897f634c9d993f327424f575af.png

        初阶C语言中我们对于结构体的研究较少,我们只需要知道一些初级的知识就ok,例如结构体声明的关键字 struct,结构体的定义与初始化及对结构体成员的访问。

3)枚举类型和联合体类型

       这两种类型在初阶C语言中比较少见,在后续的进阶C语言中将会与大家一起学习这两种自定义类型的相关知识。

2.与打印函数printf有关的知识

思维导图:

061be9b4ca3c4775a3ae48f4a6f5abca.png

C语言中常用的转换说明有以下这些:

cbcf7f238ec340b8a2d7e5bdfedcacfc.png

 转义序列:

5bc53ece9cfa4557a0df97095b8d5627.png

 3.进制前后缀

5fed449c6d7542549679b1145ae3b714.png

4.内存存储的有关知识

1)数据的存储形式

a0409356107941ceb88b2b10cceb481a.png

       整数在内存中的存储形式都为二进制补码。,原、反、补码的相关知识:

9ea8f7560187485daef4cb522b898a0e.png

       内存大小的单位转化如下:

217e440d67704dfeb017b949d9fda9c4.png

 2)数据被存储于被编号的内存单元中

       我们对每个最小内存单元(一个字节)进行编号,这些编号即为地址,那么每个地址就管理一个字节大小的内存空间。

       在32位平台上地址由32位的二进制数表示,对应着32根分别表现高低电平两种状态的电线,这些电线整合表现出的电信号可以让我们寻址对应的内存单元,并访问其中的数据。

二、分支和循环结构

1.分支结构

分支结构有两种,分别为 if else 结构和switch结构,思维导图:

a85813d62ffa4d21a7b977c62976611f.png

1)if else结构

c031ba67bf9c41e09e02a902078ca291.png

       if else结构适用于少分支的分支结构,且分支内的操作可以很精细,它的大致语法结构为:

c1a30c7a16ac4f8c91968fc6002595b3.png

 2)switch 结构

bd03bcd61369467e9c5a2fdb3516c217.png

switch 语句的大致结构(参考):

5b6271d83e314c8d9481ccdadbc3a930.png

 switch语句中的关键字:

9a2f3e2194394f6a98a204069dfe9963.png

switch语句的基本运行机制:

        以在临近switch的括号中的表达式的值作为分支条件,找到关键字case或者default之后的与表达式的值相等的整型数值后,一直向下运行语句直到遇到关键字break才停止。

注意事项,良好的代码风格:

       由于switch结构的运行方式,在我们的每个分支对应的结果后应该记得加上 break 关键字以结束switch结构,这样不仅可以减少程序错误,也能使我们的程序更加美观,提升我们程序的可读性。

2.循环结构

思维导图:

9ab5af6344744158855a49bd78399c5d.png

1)while循环

ceb6218c978344d795f7c23973aaeb81.png

 while循环的语法结构:

69c0aac9a2354207a7e76a08e1b91cd1.png

 2)for循环

       for循环将while循环中的初始化语句、判断语句和循环表达式的自增自减部分单独挑出来,使得循环结构更加清晰分明。

语法结构:

4e188c439385490f99fba424f2b9f35a.png

运行流程图:

1d0f28ec110346cd8305facc529243fe.png

       for循环的特点:比while语句更加简洁灵活,即把循环的主体与判断部分分离开,使代码更加清晰可观。

3)do……while循环

语法结构:

3093e7242e7e4a51b79eb9d334f8339e.png

 do……while语句和while语句类似,但是先执行循环语句再判断循环的条件。

三、C语言中的函数

        函数又被称为子程序,子程序是一个大型程序中的某部分代码,由一个或者多个语句块组成,用于完成特定的功能,具有一定的独立性。

a2102f4948a34cc79e3a9f97e8d2a06a.png

 1.C语言中的库函数

       C语言的基础库中提供了一些功能常用的库函数来提高可移植性和程序效率,使用这些库函数需要在代码的开头引入相应的头文件。

2.自定义函数

cea634e292724ab19082b45b2d06b238.png

1)自定义函数的定义和组成:

b38c36af012a45c5af0c58cf128d2ead.png

2)函数的定义与声明

ae922ccc448e4a678c70941246334b43.png

3)函数的嵌套调用和链式访问

dce52702a91c476ebc57c9f7aa43d323.png

 4)自定义函数的传参

实参与形参:

59317fd7a6a0446c9bf83e3aacc05f23.png

 传值调用和传址调用:

668df8047fc649eb976c2099007bdda3.png

5)函数的递归

a141e2b4ddb040cc8bc53160afc223fc.png

       经典的可用函数递归解决的问题:汉诺塔问题、斐波那契数列……,可以把函数的递归也看作循环,它们十分相似。

四、表达式相关知识

思维导图:

4adce670ebe54fb194a3cf4000bcad3c.png

 1.运算符

       运算符在我之前的博客中详细讲过,这边是传送门哦:

(7条消息) 【C语言】C语言成长之路之关于C语言的操作符以及一些表达式的讲解(՞• •՞)._MO_lion的博客-CSDN博客

2.运算符的性质

       运算符的性质大概有这三种:优先级、结合方向、是否控制求值顺序。

       优先级表以及结合方向:操作符属性,Ծ‸Ծ,

       是否控制求值顺序:总共有三个操作符控制求值顺序,分别是:逻辑或 ||,逻辑与 &&,逗号表达式。

3.隐式类型转换

       隐式类型转换分为整型提升和算术转换。

1)整型提升

       C语言的整型算数运算总是以缺省整形类型的精度进行的,所以大小低于int的数据类型在进行算数运算或者更高位的打印时都会发生截断和整型提升。

       截断:运算完成或原补码转换后保留该数据类型对应的位数

       整型提升:将类型大小小于int的变量对应的二进制补码的位数提升至32位;提升方式:无符号类型直接在前面全部补零,有符号类型按照该变量的补码最高位是零补零,是一补一。

2)算术转换

       在进行表达式运算时操作符两边的数据类型不相同时就会发生算术转换,算术转换的优先级为以下排名,低排位的会转化为高排位的类型进行运算。

2f1453c554634cc29a8857f0e41d7862.png

 五、初级指针

思维导图:

f44af910dcab41208bc1547759b33924.png

       初阶指针的内容在我之前的博客中也有提到,感兴趣的小伙伴可以在这里看哦~:(9条消息) 【C语言】C语言成长之路之指针初阶 .( Ꙭ)_MO_lion的博客-CSDN博客

六、编码及调试

思维导图:

0bca944926c4427086db92ff75d1f722.png

一些编码问题:

2ea06dc8d5924a04a96761ea59810032.png

调试相关:

4ca0e90a0bad494faa8420118cf874f1.png

       编码和调试是我们在初阶C语言中非常重要的基础训练,锻炼我们的代码能力,提升我们对于知识的理解,希望大家在学习C语言的时候都能多练习代码,在学习理论知识的同时,代码能力也不能落下哦(◍•ᴗ•◍)。

       温馨提示(给刚学习C语言知识的朋友):在刚开始学习C语言时,大家都是一样的,只要坚持不懈不放弃地去学,去练,你的水平一定会得到提高的!

🍀结语

       最后,是小狮子每篇文章都会有的结语部分,基础C语言的模块我和大家一起学习,攻克了许多难关,希望在将来我们也能有初学这些知识的初心,无论是什么艰难险阻,我们都有勇气去面对,去克服。

       生活中也是一样,总有许多不好的事试图将我们的生活染上灰色,但是幸好我们的生活中也有许多闪闪发光的东西,给我们勇气和力量,也许是心中的理想,又或者是令人温暖的人性之美……

       相信阳光,我们终将翻越漫长的阴霾,到达那美好的彼岸,谢谢大家*⸜( •ᴗ• )⸝*

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆的yui~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值