自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程讲解上

要讲进程你就不能只跟着教科书上讲他的概念从描述进程的结构体——PCB,到地址空间从进程id到进程状态,从状态到进程切换,从切换到进程调度,再到并行并发,和进程独立性。教材观点:进程就是加载到内存的程序和正在运行的程序,并且进程可以排队而是要讲从 先描述,再组织 这一总要的组织方法开始讲起。所有的进程,在加载到内存之前,都会先生成一个PCB结构体加载到内存中。即先有 描述进程的结构体,再有进程。所以我们就从 进程的 PCB结构体开始进程信息被放在一个叫做进程控制块。

2024-07-19 17:06:43 1660

原创 你知道.c文件还需要变身成 .i .s .o/.obj 各种模样,最后才能生出.exe的文件吗? 这篇文章将带你了解 从.c到.exe,它都经历了什么

_FILE__//进行编译的源文件__LINE__//文件当前的行号__DATE__//文件被编译的日期__TIME__//文件被编译的时间__STDC__//如果编译器遵循ANSI C,其值为1,否则未定义int main()//如果编译器遵循ANSI C,其值为1,否则未定义。但是当前的VS是不支持标准C的return 0;eg.//这一段代码就形成了死循环打印M;在gcc上才能演示,下面用两张图片来说明。

2023-08-14 19:58:02 1206 1

原创 有一些函数是可以操作内存,被称之为内存函数的

/ //下面的代码告诉了我们,不可以。mymcpy函数是不可以处理重叠内存的数据拷贝的,只能处理不相关的两个内存。//所以上面两句代码,就最好不要写成 (char*)dest++或者是++(char*)// //可以用mymcpy函数把数组arr1的1,2,3,4,5拷贝到3,4,5,6,7处吗?//强制类型转换只是暂时的,它只能是放在它前面的时候强转一次。// //但memmove函数可以来完成这项任务。memmove函数可以拷贝重叠数据。

2023-08-14 14:17:02 87 1

原创 我琢磨了好久,怎么把printf(“The value of a is %d\n“,a); 中的字符串中的a,做到灵活替换呢?

我琢磨了好久,怎么把printf("The value of a is %d\n",a); 中的字符串中的a,做到灵活替换呢?

2023-08-13 11:23:53 109 1

原创 通讯录再次优化来啦,经过前两次,目前通讯录已经实现了好几种功能,接下来将引入文件操作的知识点,实现保存通讯录

printf("%-20s\t%-4s\t%-5s\t%-12s\t%-30s\n", "姓名", "年龄", "性别", "电话号码", "地址");printf("%-20s\t%-4s\t%-5s\t%-12s\t%-30s\n", "姓名", "年龄", "性别", "电话号码", "地址");printf("%-20s\t%-4d\t%-5s\t%-12s\t%-30s\n", //-可以实现左对齐。//封装一个函数来释放堆上申请的可变内存空间,在退出通讯录时调用。

2023-08-13 08:02:53 956 1

原创 C语言也有文件操作的哦

将格式化的数据,转换成字符串 int sprintf ( char * str, const char * format, ... );//有机会打开data2文件,说明,data1文件已经打开成功了,那如果data2文件打开失败,就得在结束程序前关闭data1文件,否则容易造成数据泄露。向标准输出流写格式化的数据 int printf ( const char * format, ... );

2023-08-12 13:22:47 35 1

原创 自定义类型:结构体,枚举,联合

int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体嵌套初始化//结构体嵌套初始化//枚举enum Day//星期Mon,Tues,Wed,Thur,Fri,Sat,Sun。

2023-08-11 11:21:43 31 1

原创 动态内存管理(变量和数组都是固定了用多少个字节的内存来储存,但是有没有可变内存大小来开辟空间的呢当然有啦,动态内存的管理,将带你打开新世界的大门。可变的动态内存,任君开辟)

这四个函数将是今天的主角它们都有的个性有如下几点:1.前面三个函数都得和free搭配使用,前三个函数用于开辟空间,free用于释放空间2.都有可能开辟空间失败,所以在开辟空间之后一定要判断返回的是否是空指针后,再使用3.返回值都是void*,即所开辟空间的首地址.需要用的时候,强制类型转化为里面存的什么元素的对应指针即可4.使用是要引文件 #include <stdlib.h>5.动态内存所开辟的空间都是在堆区上开辟的(后面也会详细讲一下内存分区)

2023-08-10 21:42:13 51 1

原创 上一篇博客用C语言实现了通讯录,但是那个属于静态的,下面本篇博客对其进行了优化,动态通讯录

相较于静态版,动态版的通讯录实现了对内存空间的控制使用。减少内存的浪费,主要是更改了以下几个地方:1.结构体Contact,去掉data[100]数组,变为指针,指针所指向的空间是可以调整大小的2.在初始化的时候,把数据设为想要的值3.在AddContac添加联系人的函数里把判断容量是否足够改为容量已满则扩容4.封装一个扩容函数,实现扩容功能5.在初始化和扩容中,我们会使用到动态内存管理函数(malloc和realloc),所以需要封装一个函数来实现free这些在堆上开辟的空间(代码更改地方用。

2023-08-10 16:19:38 60 1

原创 手机上都自带有通讯录,你想知道它是怎么实现的吗?阅读了这篇笔记,相信你会对你的通讯录有更深的了解!

要实现一个通讯录,首先要构思它的功能,下面就是一个通讯录的基本功能。分装成3个文件来实现(排序功能尚未实现)Contact.c。

2023-08-09 22:00:17 289

原创 让我们一起揭开指针的真面目

指针你了解多少呢

2023-07-28 09:33:47 37 1

原创 【C语言】实现三子棋(个人心得)

文章

2023-05-21 07:11:00 111 1

原创 第一篇博客

大家好,我是来自四川双子座女一枚。四川人前来报到啦。这是我写的第一篇博客,心情还是很激动的呢!我平常喜欢追剧,弹尤克里里,有一本最喜欢书——《Le Petit Prince》。就读于一个很普通的二本院校,就只能靠自己的努力啦。

2023-04-01 10:34:27 61

空空如也

空空如也

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

TA关注的人

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