- 博客(12)
- 收藏
- 关注
原创 理解文件系统(inode和data blocks),软、硬连接
所以在mydir目录下创建文件,内核需要做,找到空inode区域和空数据块区域,填入相应文件信息,找到mydir目录的数据块,填入对应的文件名和inode的映射关系。使用硬链接,虽然会多出一个链接文件名,但这不是文件,没有独立的inode,只是在相应的目录数据块中,写入链接文件名和文件名的inode,相当与对文件取了一个别名,他们共用同一个inode。软链接出来的文件,和普通文件一样,有着自己的inode和相应的数据块,但数据块中存储内容为被链接文件的地址,这样访问软连接时,就能找到链接文件。
2023-03-15 17:56:33 289
原创 文件描述符和FILE*区别(open,write,read),重定向(dup2)
做调用库函数fopen()返回的指针类型。操作系统为了管理文件,定义了一个数据结构file来管理文件。而库函数参与了封装,封装成FILE,直接与FILE*打交道。file!= FILEstruct FILE 内部包含。
2023-03-15 15:34:03 316
原创 变量的作用域、生命周期
目录作用域1. 局部变量2.全局变量作用域作用域作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。1. 局部变量局部变量的作用域就是变量所在的局部范围。{}定义局部域,在{}内部定义的变量为局部变量,此局部变量的作用域为所在的局部域中。注:{}定义的局部域中,可以嵌套定义局部域。对于有相同的名字变量且作用域的不同,会采用局部变量优先原则(或者说,就近原则)。#include<stdio.h
2022-05-04 17:13:02 711
原创 Linux下Makefile,make本质解析(看这一篇就够了)
make首先明确这是一个命令行命名,它的作用为,在当前路径下,找到名为Makefile的文件,解释Makefile中的指令。插入一句,为什么是在当前路径下找Makefile,是因为Shell的运行原理,除去部分的内建命令,大多数命令执行原理是为,Shell创建子进程,找到命令文件,执行进程替换,执行相关代码。(非内建命令==可执行程序)为此,我们可以查看进程的默认路径。上诉为进程的资源,cwd即表示此进程的默认路径(创建文件,找文件等)。MakefileMakefile本质就是文件。只不过配合
2022-04-24 11:31:56 2767
原创 Linux下 gcc的使用
目录-E选项-o选型-S选型-c选项不带选项-g选项-static选项-E选项此选项让gcc进行到预处理后停下,不主动生成文件。需要自己重定向到文件中。如若不重定向,即直接使用gcc -E test.c将会把 结果输出打印到屏幕上,如若想要把处理结果定向到文件中,可用定向符 >或者>>,也可带-o选项(常用)。gcc -E test.c > test.i//或者gcc -E test.c -o test.i一般把.i文件后缀表示为进行到预处理的程序文件。-o选型
2022-04-12 10:47:48 573
原创 迭代器失效相关题(vector)
- 迭代器所指向的已经被更改,不再指向它该指向的数据或者对象,失去意义。 - 迭代器所指向已不是有效数据或空间,变为野指针,如插入数据时得开辟新空间扩容。
2022-04-03 10:00:41 78
转载 LeetCode136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
2022-04-03 09:13:24 129
原创 内联函数inline
前言:内联函数是C++为提高程序运行速度所做的一项改进。常规函数和内联函数的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中。内联函数的定义定义内联函数,需使用C++的关键字 inline 且必须采取下俗措施之一在函数声明前加上关键字inline;在函数定义前加上关键字inline。通常的做法是是省略原型,直接定义(即函数头和所有函数代码)放在本应提供原型的的地方。//内联函数的定义,关键字在返回类型之前inline int Add(int x,int y) .
2022-03-22 15:55:12 3404
原创 快速搞懂变量的声明、定义区别;全局、局部变量及static修饰局部变量、全局变量(静态变量)与函数的作用。
前言:本章目录(一)变量的定义和声明即区别(一)变量的定义和声明即区别变量的定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。//注:这个名字一旦和这块内存匹配起来,它们就共同生死,不离不弃,即不可以用被分配的名字去定义另一块对象空间,编译器会报错。并且这块内存的位置也不能被改变。一个变量或对象在一定区域(比如函数内、全局等)只能被定义一次。如果定义多次,编译器会提示用户重复定义了同一个变量或对象。现在来讲讲什.
2021-10-19 23:05:00 885 1
原创 (%3d)数据格式在scanf和printf中的常规应用,你真的理解透了吗?
前言:对于scanf、printf中数据格式常使用的是单个,即%d、%s、%c等但也有着像%3d等的数据格式虽然没有在代码中常运用 ,但也得知道分别是怎么实现的文章目录(一)数据格式在scanf中的应用(一)数据格式在scanf中的应用下面用 %3d 举例如int main(){ int n; scanf("%3d", &n); printf("n=%d\n",n); return 0;}运行代码,从键盘输入值1) 比给定的数据格式小或相等如输入 12 ,输出.
2021-10-12 22:09:02 11092 8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人