- 博客(22)
- 收藏
- 关注
原创 Linux开发工具vim
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。文章到这里就结束了哦~~
2024-03-02 15:48:36
989
原创 我是如何深入学习理解Linux权限的,答案就在这里。
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。文章到这里就结束了哦~~
2024-02-25 18:39:43
935
原创 考研西电(833),考什么?计算机组成原理第一章要点
1.定义:摩尔定律描述为:集成电路芯片的集成度每18个月翻一番。在408中是这样描述的:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。2.意义:摩尔的预言不仅对他本人,而且对整个社会都是意义下深远的。后来摩尔与其他人共同成立了英特尔公司,并通过他开创的技术创造了无数的财富。摩尔定律并不是一个物理定律,而是一种预言,他鞭策着工业界不断地改进,并努力去实现它。
2024-02-23 16:08:19
1680
1
原创 Linux常见的指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。rmdir是一个与mkdir相对应的命令。Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。在:Linux中以 . 为开头的文件,表示的是隐藏文件。
2024-02-21 22:39:32
3996
4
原创 字符函数和字符串函数
在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在errno.h 这个头⽂件中说明的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。上⾯的代码,我们将⼩写转⼤写,是-32完成的效果,有了转换函数,就可以直接使⽤ tolower 函数。
2024-02-21 20:42:03
726
原创 深⼊理解指针(5)【深入理解指针,体会大厂的笔试题】
在学习操作符的时候,我们学习了sizeof ,sizeof 计算变量所占内存内存空间⼤⼩的,单位是字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。,aa表示的是首元素的地址,也就是第一行的地址,aa + 1就是跳过第一行,指针指向第二行的地址, * (aa + 1)就是6,(int * )(所以 a是第一行的地址,放到了pa中, pa++,指针也就指向了第二行。在X86环境下,假设结构体的⼤⼩是20个字节,程序输出的结构是啥?p表示的是a(首元素)的地址。所以 *pa就是at。
2024-02-20 16:07:57
742
1
原创 深⼊理解指针(4)(深入理解回调函数,qsort使⽤,qsort函数的模拟实现)
如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。我们可以把调⽤的函数的地址以参数的形式传递过去,使⽤函数指针接收,函数指针指向什么函数就调⽤什么函数,这⾥其实使⽤的就是回调函数的功能。使⽤回调函数,模拟实现qsort(采⽤冒泡的⽅式)qosrt 函数的使⽤者得实现⼀个⽐较函数。回调函数就是⼀个通过函数指针调⽤的函数。
2024-02-17 11:21:25
279
1
原创 深⼊理解指针(3)【深入理解数组指针,函数指针】
⾸先我们再次理解⼀下⼆维数组,⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。解释:p先和*结合,说明p是⼀个指针变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是型就是数组指针类型int [5] ,所以第⼀⾏的地址的类int(*)[5]。确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过式获得函数的地址。那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?
2024-02-16 20:23:02
954
1
原创 深⼊理解指针(2) 【深入理解冒泡排序、指针数组及模拟二维数组】
这个代码搞明⽩后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组⾸元素的地址,可以赋值给p,其实数组名arr和p在这⾥是等价的。同理arr[i] 应该等价于*(arr+i),数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。
2024-02-16 16:22:59
1051
1
原创 深⼊理解指针(1)
前⾯的内容我们了解到,32位机器假设有32根地址总线,每根地址线出来的电信号转换成数字信号后是1或者0,那我们把32根地址线产⽣的2进制序列当做⼀个地址,那么⼀个地址就是32个bit位,需要4个字节才能存储。上述代码中n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改n。同理64位机器,假设有64根地址线,⼀个地址就是64个⼆进制位组成的⼆进制序列,存储起来就需要8个字节的空间,指针变的⼤⼩就是8个字节。
2024-02-15 21:45:10
756
1
原创 操作符详解
其实我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进制、10进制、16进制是数值的不同表⽰形式⽽已。我们重点介绍⼀下⼆进制:10进制中满10进110进制的数字每⼀位都是0~9的数字组成2进制中满2进12进制的数字每⼀位都是0~1的数字组成其实10进制的123表⽰的值是⼀百⼆⼗三,为什么是这个值呢?其实10进制的每⼀位是权重的,10进制的数字从右向左是个位、⼗位、百位…,分别每⼀位的权重是100,101,102。
2024-02-14 16:30:34
1238
1
原创 函数递归与迭代
递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。写⼀个史上最简单的C语⾔递归代码:int main()main();//main函数中⼜调⽤了main函数return 0;上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出。
2024-02-13 20:17:03
580
2
原创 VS实⽤调试技巧
bug本意是昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或问题,简称程序漏洞。“Bug”的创始⼈格蕾丝·赫柏(GraceMurrayHopper),她是⼀位为美国海军⼯作的电脑专家,1947年9⽉9⽇,格蕾丝·赫柏对HarvardMarkII设置好17000个继电器进⾏编程后,技术⼈员正在进⾏整机运⾏时,它突然停⽌了⼯作。于是他们爬上去找原因,发现这台巨⼤的计算机内部⼀组继电器的触点之间有⼀只⻜蛾,这显然是由于⻜蛾受光和热的吸引,⻜到了触点上,然后被⾼电压击死。
2024-02-12 21:28:08
816
2
原创 函数的使用
了解了库函数,我们的关注度应该聚焦在⾃定义函数上,⾃定义函数其实更加重要,也能给程序员写代码更多的创造性。般我们在使⽤函数的时候,直接将函数写出来就使⽤了。C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的函数的调⽤⼀定要满意,先声明后使⽤;函数的定义也是⼀种特殊的声明,所以如果函数定义放在调⽤之前也是可以的。
2024-02-11 20:33:49
633
2
原创 一维、二维数组的使用
有⼀个⽐较迷惑的点,变⻓数组的意思是数组的⼤⼩是可以使⽤变量来指定的,在程序运⾏的时候,根据变量的⼤⼩来指定数组的元素个数,⽽不是说数组的⼤⼩是可变的。前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。//计算⼀个元素的⼤⼩,单位是字节。//第⼀个元素初始化为1,剩余的元素默认初始化为0。存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。
2024-02-10 22:49:21
991
1
原创 分⽀和循环-------Jajask_g
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。
2023-08-07 11:21:20
37
原创 强制类型转换--------Jajask_g
俗话说,强扭的⽠不甜,我们使⽤强制类型转换都是万不得已的时候使⽤,如果不需要强制类型转化就能实现代码,这样⾃然更好的。在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单。
2023-08-06 20:42:13
42
原创 scanf和printf介绍----------Jajask_g
9.1 printfprintf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。printf() 不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换⾏。return 0;9.1.2 占位符printf() 可以在输出⽂本中指定占位符。所谓 “占位符”,就是这个位置可以⽤其他值代⼊。// 输出 There are 3 apples # include int main() {
2023-08-06 20:41:30
125
原创 操作符----------Jajask_g
上⾯⽰例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是1.5。运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负数。2.+ 和 - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符。在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。这⾥的+是正号,-是负号,都是单⽬操作符。
2023-08-06 20:40:28
46
原创 初始C语言-----Jajask_g
初始C语言,让读者初步了解main、 printf和库函数、关键字介绍、字符和ASCII编码 、字符串和\0、 转义字符、语句和语句分类、 注释是什么?为什么写注释?
2023-07-31 11:10:42
56
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人