- 博客(6)
- 收藏
- 关注
原创 计算机中的机械设备:磁盘
本章先来简单的介绍一下磁盘,让读者看看磁盘内部是什么样子的,把抽象的名称变为具体的实物。利用磁记录技术来存储数据的存储器。由于磁盘是使用机械结构,这既有优势,又有缺点,其优势是:磁盘的价格比较低,并且存储空间非常大。其缺点是磁盘比较笨重,IO(输入输出)效率比较低并且可能会由于机械原因造成磁盘数据丢失(下文详细说明)。下面来看看磁盘具体是什么样子的:从上方的图片也明显可以看出,磁盘内部确实是使用机械结构实现的,其机械结构的具体组成在下文会进行详细的介绍。
2026-03-18 23:28:25
349
原创 C语言的指针
在编程中,指针与地址是同一个概念,因此可以先从地址的角度理解指针。编程中的地址可以说是对实际生活中地址的抽象,比如在收发快递时,快递员通过提供的地址,就可以准确的定位到你家的位置。对应到编程中,可以说操作系统对每字节的内存空间都进行了编号,通过这个编号,就可以准确定位到每字节的内存空间,这个编号,就是所谓的指针,并且我们在大多数情况下并不关注指针本身,而是关注通过这个指针能够找到的资源数据。然后很自然的会产生一个问题:操作系统是怎么产生这些编号的?
2026-01-26 22:29:47
1351
原创 函数的缺省参数与函数的重载
缺省参数是一个非常简单的语法:即在声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时,如果没有指定实参就采用该形参的缺省值,否则使用指定的实参。int c = a;int d = b;如上方的代码,函数fun的a=10与b=20就是形参a与b的缺省值,在调用处,k没有传入实参,因此直接使用缺省值,k最终的结果是30,在r处,传入了实参1和2,此时以传入的实参为准,因此r最终的结果是3。
2026-01-13 21:32:26
604
原创 C和C++的内存管理
要重点注意的是realloc函数,其本身用于扩大已经开辟的内存的空间,但是在扩容的过程中可能会出现两中情况,情况1:扩容后没有覆盖掉后方的有效数据,此时就可以直接进行扩容(原地扩容),情况2:扩容后覆盖掉了后方的有效数据,此时会先在内存空间中找到一片足够大的空间,再将原本的数据拷贝过去,并释放掉原本空间处的内存,在新的空间中完成扩容。原因就是new的底层实际上是对malloc的封装,并且内置类型也不需要调用构造函数,因此可以使用free进行内存的释放,但是,这是一种非常丑陋的写法,非常不推荐这样写。
2026-01-04 19:12:58
732
原创 C++编译器的默默付出
先来聊些题外话,就如上文所述,C++是一门效率非常高的语言,这其中编译器的优化只是一部分原因,另一个原因就是:C++的程序可以直接跑在操作系统之上(相当于没有中间商),拿Java进行对比,Java的程序不是直接跑在操作系统之上,而是先在操作系统之上搭建一个虚拟机,再让程序跑在虚拟机之上(相当于有了一个中间商)。
2026-01-02 21:02:21
888
原创 C++的命名空间
如上方代码,变量b指定查找了作用域T中的a,因此b被赋值为20,而c没有指定作用域,遵循先在局部找,再去全局找的规则,因此c被赋值为10,要注意的是变量d,其同样没有用::指定作用域,但是在局部和全局中都找不到变量e,此时是不会去命名空间T中查找的,因此在d处的赋值会报错,对于变量g,其指定要去T中查找,但是T中并没有变量f,此时编译器是不会再去全局找到f给g赋值的,因此g的赋值也是错误的。但是在2代码处,在指定了作用域后,main中给变量a的赋值又是可以的。(在大型项目中,非常不推荐使用这种方法)
2026-01-01 19:46:00
624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅