一、电脑
我们一开始买回来的电脑分成 硬件和操作系统 在二者中间有一层叫做 驱动层 。
关于驱动层,目前我是这么理解的,它相当于是一座桥梁,是用来连接起虚拟的操作和现实的机器,因此可以通过现实当中的动作来使计算机完成一定的操作,也就是作为一个翻译来帮助硬件更好的理解我们究竟想要做什么。
所以 硬件 操作系统 驱动层 这三者被我们称为 下层 或者 底层 。而在操作系统之上下载的软件应用就被成为上层。例如qq、微信、B站、抖音等等
历史:
其实最一开始计算机是为了帮助科学家计算庞大的数据而发明的,当时也只有科学家可以和计算机沟通,那时二者的语言就是二进制的指令,但谁TM的能记住1000001111、1110010101等等的意思,于是一部分人就把常用的一部分代码用其他的符号进行了替代,也就是助记符的出现,给这些二进制的指令起名字,形成了低级的汇编语言。随后一个又一个企业/公司发现了这计算机代码的潜力,像B语言,什么C语言啊。而后又经过一代一代的改良形成了许许多多的版本,代码的市场变得越来越乱。美国一看,这不行啊,我们需要一个同意的标准,这样你写的我能用,而我写的你也能用,就有了标准C语言ANSIC得标准,形成了我们现在学习的高级语言C语言。
说道学习C语言的代码,就不得不提到,什么是编译器,什么是编辑器。目前我的理解是编译器能够将源代码转换成计算机可以执行的机器语言。而编辑器更加侧重于对于文件的处理,就像Python一样。
我们写C语言一开始以.c开始最后会生成.exe文件,test.c——编译——链接——test.exe
二、怎么写C语言
说道写C语言就需要对应的软件,现在应用的是VS 2023学生版。
1.那么怎么开始呢,首先打开VS文件——创建项目,创建新项目,空项目——创建源文件,找到源文件右键新项目,但注意要把.cpp改成.c
其中.c代表的是源文件,.h代表的是头文件(但二者有什么区别,暂时也还没学)
那么现在就开始写代码了。首先需要有一个代码,如下图
#include <stdio.h>
//int main()
//{
// printf("hello world\n");
// return 0;
//}
那么分别都是什么意思呢?
#include <stdio.h>代表告诉这个编译器,我要使用你里面自带的函数库,其中stdio是标准输入输出的意思,.h是头部文件,但不知道有什么深层次的含义,不知道为什么要这样。
int main()表示程序执行的开始,也就是入口,这个在整个程序中有且只有一个。
printf("hello world\n");打印函数,意思是要让程序弹出一个屏幕上面写的内容是“”里面的东西,其中\n,是转义字符随后会说。
return 0;的意思是返回0,也就是程序结束的意思,至于为什么是0,只能说是约定俗成的习惯。
2.数据类型
上述均是数据类型,基本上都要记住,全是常见的类型。在我看来,这些类型都是一个修饰词,来修饰你写的数据。
每种类型的存数范围是不一样的,参考右边的数字。而这些数字的单位是字节,计算机最小的单位是比特,bit,意思差不多是其内部硬件的一个0或1的符号是1bit,而1字节(byte)=8bit,1kb=1024byte,1mb=1024kb。还有其中long的大小应该>=int
接下来是一些例子吧。
3.常量和变量
什么是常量,什么是变量,很简单。不变的就是常量,可以变化的就是变量。例如生活中的圆周率,普朗克常数等等就是常量,一个人的血压,商场每小时的人流量就是变量。而现在我们要做的就是要让计算机知道这些数字究竟是什么意思,这也就有了常量和变量。
而变量也有分类,如下
另外局部变量和全局变量的名字建议不要相同,容易误会,出bug。
接下来有一道例题
要注意scanf这个输入函数的格式,还有printf的输出格式注意总结和积累
接下来说一说全局变量,局部变量的作用域和生命周期
接下来要说一说常量
第一个字面常量
第二个const定义的常变量
接下来进行解释
上文当中可以看出a为一个变量,我们可以改变它的数值。
这样更改后
直接报错,说是没办法更改数值
那如果用const呢,如下
还是不行,所以const并不是改为了常量,只是增添了一种常量的属性
第三个
并且改数也会报错
第四个枚举常量
注意enum这个符号
还有一些是自己的理解,感觉并不是十分的正确,以后学得深入后再来反思
4.字符串
注意写字符串的格式“”里面写,‘’里面写只能写一个字符,另外,char是字符数据类型
接下来很关键,我们要充分去理解字符串的含义。还有\0究竟是什么意思。注意注释
从这里已经可以看出来,arr2当中没有所谓的\0,造成了无法立即停止读取arr2,所以要注意\0其实很重要。
而我们手动加上\0这个读取又相差无几,但也不推荐下面这个
学习了一个新的库函数strlen,注意意思是表示字符串的长度,和它配有的头部文件。
在arr2中加入\0就会有如下的结果
可以看出\0的重要性,除此之外,积累一个库函数strlen,scanf,printf,sizeof,arr[常量]
5.转义字符
转变原来字符的意思
例子:
可以清楚看到加了一个\后语句发生的变化
那么还有其他的一些转义字符
其中重点是1——4,8——10,12,13(从上往下数)
其中什么叫三字母词呢,就是在一些古老的时候,我们会有 ??)变成 ],??(变成[ 的一个操作,可是我们想要输出原结果,就有了这个转义字符
还有补充的一些东西
\ddd的意思是八进制的数转成十进制再去寻找对应的ASCII编码,例如\130=88,对应的是88
这就是ASCII编号对应的东西
至于\xdd,对应的是十六进制的数,两位数其实已经够用了,但你如果写\x063,使用三位也是可以的但注意不能超出ASCII编号的范围,所以其实这两个进制是有取值范围的,如下
最后这些笔记还是有问题的,需要自己一一进行验证。
/t=一个table,就是1tab=四空格,另外/t算一个字符
一道小小的例题
6.注释
因为C语言中无论你有多少个/,到它最后识别只能识别一个/然后报错,如下图
7.语句
选择语句
循环语句
暂时学了这两个语句格式
8.函数
函数其实是为了方便我们编写代码,在程序之外写好一个规律
9.数组
打印出数组里的元素,简单版
最后说一句话学习,学习,还是学习,千万不要让自己偷懒