自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 对固态硬盘SSD的理解

并且对于SSD来说 他的读比写要快的多。假如这块SSD是1TB 1TB/128GB=8, 你每次需要写满1tb然后再更换内容 所以平均下来八天闪存块就会擦除一次 一个闪存块可以被擦除1K次 那是多少天--------8K天-------23年。但实际上我们一般用的SSD都够我们用的了 我们设想一下 假如,我是说假如 你每天要写128GB的内容写在你的SSD上 那对于一个闪存块擦写寿命只有1K次的来说 你可以用多久。每当我们需要更改存储内容的时候 我们都要进行一个块的内容更改 而不是一个页的内容更改。

2023-04-25 15:03:09 130

原创 动态内存开辟

上面中发现并不是直接将realloc返回指针给p指针 而是用了一个中间量ptr 因为realloc开辟空间时有可能并没有找到合适的空间大小来开辟 那么此时就会返回一个空指针 所以需要用ptr先接收判断一下。//使用完之后 free 这里注意 free后 将空间还给操作系统但此时p指针依然保存着这块地址。int*p=(int*)malloc(10*sizeof(int)) //动态开辟十个整型的内存空间 堆区。与malloc的区别:1.calloc可以对空间进行初始化 但malloc不会。

2023-04-22 18:00:34 45

原创 结构体类型理解

上述方式不行的原因是 没有声明结构体类型的名字 就引用了结构体变量Node 但是此时会有一个先后顺序问题:到底是先创建了Node变量 还是先自引用了Node,所以该方法是不行的。2.其他成员存放前与对齐默认值比较一次(vs默认值为8) 取较小数作为对齐数,将其他成员依次放在对齐数整数倍的地址处。s1,s2是全局变量的定义 而s3,s4属于局部变量的定义。3.结构体大小是所有对齐数中最大对齐数的整数倍。//对链表的声明 自引用结构体。s3={1,'a'};二、结构体类型的定义。三、结构体类型的对齐。

2023-04-22 12:39:16 35

原创 qsort库函数的使用方法

传入的形参依次是 base 指所要排序数据的首地址。num指排序的元素个数 size指每个排序元素的大小。函数指针是需要自己先实现。该函数里 用的基本都是void类型的指针 这样做的意义是不管你传进来什么类型的指针 都能够接收 最后再通过强制类型转换成你所需要的数据。//括号表示你所传进来的数据是什么类型的。经查阅qsort函数定义为。

2023-04-16 16:48:42 60

原创 几种不同的指向的指针

指向函数指针数组的 指针 void(*(*b)[2])(int,int);函数指针数组 void(*a[2])(int,int);函数指针 void(*a)(int,int);数组指针 int(*a)[2];指针数组 int*a[2];数组 int a[2];整型指针 int*a;

2023-04-16 15:46:49 29

原创 函数指针理解

void(*signal(int,void(*)()))(int) 此代码中signal 表示的是一个函数 它传入的参数是 int 和一个函数指针【void(*)() 】 并且 这个函数的返回值类型是一个函数指针 可以看作是。(*(void(*)()0))() 对于此代码 中间的(void(*)()0是将 0强制类型转化成 一个函数指针 然后对此函数指针进行解引用再传空参。void(*)(int) signal(void(*)() ) 这样的一个形式 会更容易理解。

2023-04-16 15:38:29 24

原创 对指针的一些理解

/ 可以理解为 int(*)[10] arr[10] 为一个存储数组指针的数组 arr就是一个存储十个数组指针 每个数组 指针指向一个 元素为10的数组。//传进来的是首个指针的地址 用 二级指针接收(传进来的是int *类型的地址,用指针接收)void test(int(*a)[3]){} //此时表示是a指针是一个指向数组大小为3 类型为int的地址 跟传进来的参数符合 可行。//传进来的是数组首元素的地址 该元素是(int型的地址) 用int类型的指针接收。//传进来的是数组 用数组接受。

2023-04-15 16:25:35 52 1

原创 char类型细解

10000000--->11111111111111111111111110000000 打印时为无符号数 正反补相同。因为char类型的范围是-128-----127.在存储到127(01111111)时再进一 就会变成1000000。打印出来时打印的时 unsigned int 所以 要进行整型提升 要补1(因为此时符号位还要带着)printf("%u\n",a);//输出为同样的数 原理与上述相同。//输出4294967168。

2023-04-13 16:42:59 222 1

原创 二分查找发(C实现)

/最右边元素的下标。//要进行查找的数组。//取平均找到中间元素的下标。那么就说明要找的数在中间数的左边,那么就再进行取平均找到下一次的中间元素并进行比较,找到数组的最左与最右元素的下标,取平均值,找到中间元素,若中间数比要找的数大,printf("要找的元素下标为:%d", mid);//最左边元素的下标。

2023-04-02 21:39:01 45 1

原创 OS自我学习之线程和进程

内核级线程对于os来说是不透明的,而对用户是透明的,内核级线程相比用户级线程来说,就可以充分的发挥多处理机的优势,内核能够同时调度同一个进程的多个线程并行执行,若一个线程被阻塞,其他线程不会被影响。用户级线程是对于内核来说是透明的,而对用户程序是不透明的,因此我们在进行用户级线程运行的时候,对于内核来说其实还是进程,所以进程还是最小调度单位,并且线程不需要切换到内核空间。但是每当一个用户级线程被阻塞时,除非该线程自己释放,否则其他线程是执行不了的。

2023-04-02 20:15:35 24

空空如也

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

TA关注的人

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