自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TROUBLE I AM IN

小白的日常生活

  • 博客(14)
  • 收藏
  • 关注

原创 《大话数据结构》之线性表总结

线性表特性对比基础知识介绍顺序存储和单链表存储空间从这个角度说,顺序存储需要提前申请好对应的存储空间,而链表则是可以采用malloc来申请内存,然后存储新的内容。查找效率顺序存储的查找效率就是随查随用,就是O(1)。链表最坏的情况就是遍历整条链,所以是O(n)更新效率顺序存储更新的效率就比较麻烦了,需要移动对应的位置后面的所有元素,所以是O(n),而链表就快多了,就是O(1)。静态存储存储空间与顺序存储是一样的,都需要提前申请好这块的内存。查找效率跟顺序存储是一样的。更新效率这

2021-04-26 22:54:08 153

原创 《大话数据结构》之线性表

链表顺序存储简单来说就是用数组存储数据。链式存储这个简单来说就是存储下一个地址,比如《海贼王》中的历史时板,每块板子上的信息都是不足的,如果你想要找到最终的答案,需要从上一块石板开始到下一块石板。或者再举个例子,比如这是个游戏任务,一个游戏任务会被拆分成多个小任务,在每个小任务的部分,会要求你完成该部分的任务,然后再给出你下一条任务的提示。静态存储这个回归到最开始的顺序存储,只不过原先的数组中,每个值不仅存储当前的值,还存储下一个值的数组下标。循环链表这个要说也很简单,就是在在链表末

2021-04-26 22:37:23 469 1

原创 C语言预处理器和C库

C语言预处理器和C库C语言编译前工作下面的步骤发生在程序交给预处理器前,由编译器处理。字符映射,即将代码中出现的字符映射到源字符集。啥叫源字符集呢?就是程序理解的字符集。搜索\以及后面有个换行符的代码,将其整合成一行,比如:printf("hello \ world\n");会被转换成:printf("hello world\n");将代码文本中的:序列空白序列注视序列替换成一个空格,简单来说就是将代码中的非代码部分去掉。#define详细内容首先

2021-04-18 23:41:04 468 10

原创 C语言结构体,联合,枚举类型,typedef

C语言结构体,联合,枚举类型,typedef结构体直接看代码:#include "stdio.h"#define MAX_TITLE 30#define MAX_AUTHOR 30#define MAX_BOOKS 10struct book{ char title[MAX_TITLE]; char author[MAX_AUTHOR]; float price;};struct volume{ // 结构体的数组 struct book boo

2021-04-17 16:09:47 219

原创 Ubuntu 下配置 Typora 图片上传到 smms

Ubuntu 下配置 Typora 图片上传到 smms首先在这里安装 PicGo[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9BiOPoj-1618560989356)(https://i.imgur.com/WL8vTYG.png]安装完成后,需要到:https://sm.ms/ 这个网站去注册一个免费账号,然后注册成功后就可以获得一个token。在你当前用户的目录下,这里以我的为例:/home/你当前用户的目录/.picgo/config.json中配置成下

2021-04-16 16:20:36 240

原创 C语言文件基本操作

C语言文件基本操作基本例子:#include "stdio.h"int main(){ // 获取文件地址指针,或者叫句柄 FILE *fileHandler= fopen("这里写一个文件的绝对路径","r"); int ch; // 读取内容 while ((ch= getc(fileHandler))!=EOF){ // 输出内容到标准输出 putc(ch,stdout); } // 释放句柄 fc

2021-04-12 22:31:25 204

原创 C语言关键字:const / volatile / restrict

C语言关键字:const / volatile / restrictconst 与指针这一块很有意思,就是不同的写法限定的内容是不一致的,首先我们知道加上const后该变量就会变成只读的,但是对于指针,是限制该指针指向新的地址,还是限定指针所指向的内容变成只读的:const float * pf;float const * pf2;这两种写法是一样的。这种方式就是限定无法通过pf修改所指向的地址的内容:#include "stdio.h"int main(){ float cons

2021-04-12 16:05:15 202

原创 C语言分配内存

C语言分配内存首先说基础:malloc:申请内存参数:申请内存所需要的字节数返回参数:void*类型的指针,如果申请内存失败,就会返回空指针free:释放内存参数:申请到的地址,即上面返回的指针返回参数:无calloc:作用和 malloc 类似,就是参数不同下面就是借用这个内存分配演示一下生成动态数组:#include "stdio.h"#include "stdlib.h"int main(){ int arrayLength; if (scan

2021-04-12 11:35:59 185

原创 C语言存储类别、链接和内存管理:存储期和存储类别

C语言存储类别、链接和内存管理基础概念,作用域和链接存储期啥叫存储期呢?简单来说就是当前变量什么时候被自动销毁,内存被回收。比如:#include "stdio.h"void debug(void );int main(int argc,char* argv[]) { // 调用 debug()函数,其中的变量 int data=1;被分配内存 debug(); // 调用结束,debug() 中的 int data=1; 被自动销毁 // 再次被调用,则再

2021-04-10 16:21:08 241 3

原创 C语言存储类别、链接和内存管理:基础概念,作用域和链接种类

C语言存储类别、链接和内存管理基础概念首先就是介绍一些基本概念,然后就是分别扩展这些概念的属性:对象:内存中一个存储单位存储的具体的值标识符 / 左值:就是代码中代表内存中对象的值,比如:int sign=1;中的sign就是一个标识符,sign+1就不是一个标识符,因为它不代表内存中的任何一个值。但是结合到指针就会再复杂一点:char address[]="hello world";这里*(address+1)也可以算是一个标识符,因为其也代表一个内存地址。标识符有一个特性就是

2021-04-09 22:07:39 233

原创 C语言与字符串

C语言与字符串字符串本质C语言的字符串本质上就是字符的数组。#include "stdio.h"int main() { // todo 这里特意加上 const 是为了说明这个值是不可修改的 // 更加通俗的理解就是开辟了一块只读的存储空间专门存储字符串:"hello world",然后将首地址赋值给 constString 这个指针 const char* constString="hello world"; // 这个值则是开辟了一块连续的地址空间,用来存储

2021-04-05 14:20:38 155

原创 C语言之预处理

C语言之预处理这个本来没啥讲的,就是我发现了一个很有意思的东西:#include "stdio.h"#define PI 3#define S PI*r*rint main() { int r=3; printf("%d\n",S); return 0;}注意这里看到定义预处理的时候:#define S PI*r*r,有一个r的值是没有定义的,但是这样是没有问题的,真的有意思。至于为什么可以这么写,是因为这里只是预处理,在真正编译的时候,会被替换成具体的值,即会

2021-04-04 21:00:20 167

原创 C语言之函数指针

C语言之函数指针参考B站视频:小甲鱼C语言视频教程在开始前,问一个问题,函数是否是类似int a=1;这样的变量?答案如果是是的。那么是否可以定义一个函数类型的变量呢?答案如果也是是的,那么怎么定义呢?int bigger(int,int);类似这样,就定义了一个函数类型的变量,其接受两个int类型的输入作为参数。具体看下面的例子:#include "stdio.h"int main() { int bigger(int,int); int smaller(int,in

2021-04-04 14:26:54 151

原创 C语言中的二维数组与指针

C语言中的二维数组与指针这一块是很烦,但是理顺了之后就会简单很多。数组存储本质首先看下面一段代码:int singleArray[4]={1,2,3,4};其在内存中的就是这样的存储形式,其中地址1代表的就是singleArray,其本质就是一个指针值,所以你采用*singleArray就能获得1。或者你还有可能见到这种写法*(singleArray+1),这样就能获得数组第二个的值,即2,这是因为地址2和地址3的值是连续的,两者之间的差值是1,为什么是1呢?这个需要结合数电的知识解释,这里

2021-04-03 16:02:03 501

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除