自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言进阶——文件操作

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。FILE*类型的文件指针,这个指针被抽象成数据流。fclose传参传文件指针就可以了,fclose(pf);的含义就是关闭pf所指向的文件信息区对应的文件。pf = NULL;但是fclose函数不会把文件指针置空,后面依然需要手动将文件指针置空。这里可以类比:动态开辟空间后,free释放空间时,也不会把指针置空,如果不手动将指针置空,该指针将成为野指针。功能函数名适用于字符输入函数。

2024-03-22 18:19:53 844 1

原创 C语言进阶——升级版通讯录

动态申请的空间需要指针来维护,所以我们把原来的data数组,改成PeoInfo* 类型的data指针,这样待会就可以使用malloc函数动态申请空间,用data指针来维护,并且当通讯录需要扩容的时候,我们可以使用realloc函数调整malloc动态申请的空间的大小。这是之前讲过的简易版通讯录的test函数中的代码,我们可以看到,先是创建了一个Contact类型的con变量,con的内部就有data指针,紧接着就调用了初始化函数,看来我们应该从初始化函数下手了。再过去的文章里,我们讲过了简易版通讯录。

2024-03-18 18:19:37 721 1

原创 C语言进阶——动态内存管理

malloc和free都声明在 stdlib.h 头文件中//动态开辟size个字节空间这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size为0,malloc的行为是标准是未定义的,取决于编译器。这里需要说明。

2024-03-16 13:47:21 848 1

原创 C语言进阶——自定义类型

int age;//这时,我们就可以把不同类型的元素放在结构体里,解决我们的问题}p1;//在最后可以直接创建结构体变量//结构体声明最后要加上分号,不要忘记//也可以声明完结构体类型,再定义结构体变量//初始化:定义变量的同时赋初值。int data;}n1 = {10, {"zhangsan","男",20}, NULL};//结构体嵌套初始化struct Node n2 = {20, {"lisi","女",19}, NULL};//结构体嵌套初始化。

2024-03-15 22:01:29 961 1

原创 C语言进阶——通讯录(简单版)

增加联系人删除联系人修改联系人查找联系人显示所有联系人退出通讯录contact.h —— 函数和类型的声明contact.c —— 函数的实现test.c —— 测试通讯录假设通讯录中可以存放100个人的信息。每个人的信息包括:姓名、年龄、性别、电话、住址。这时,每个人的信息可以设计为一个结构体,

2024-03-14 17:19:10 1024 1

原创 C语言进阶——模拟实现memmove函数

我们是不是可以得到一个结论,当destination指向的空间的起始地址,也就是destination指针指向的位置,也就是destination指针在source指针的左侧的时候,我们采取从后向前拷贝的方式或许更加靠谱一些。我们可以发现,从后向前同样发生了覆盖,只是这一次拷贝3把5覆盖的时候,5已经提前拷贝到7的位置去了,尽管被覆盖,但是并没有发生数据的丢失。拷贝的话,就会导致前面的数据被覆盖,当想把3拷贝到原来5的位置去的时候,我们可以发现3已经被前面拷贝的1给覆盖了。

2024-03-11 22:15:10 659

原创 C语言进阶——memcpy函数的使用与模拟实现

今天讲解《3个》内存函数的使用与模拟实现。

2024-03-10 15:08:38 962

原创 数据在内存中的存储

我们首先创建了一个int n整型变量,存入了一个9,这个9是以整型的形式存储到内存中的,第一个printf输出的是%d,所以n的值依然为9,这里从内存中拿取数据的方式,也是以整型的形式拿出来的,当&n并且强制类型转换成float*时,再解引用,我们发现他打印%f,并不是我们想象的9.000000,这一次我们从内存中拿取数据的方式则是以浮点数的形式拿出来,他的结果就发生了变化,简单的讲就是 (-1)^S 来表示浮点数的符号,M就是浮点数的二进制表示形式 ,第一个printf,肯定输出的是9,这毫无疑问。

2024-03-01 15:27:03 374 1

原创 初学者容易搞不懂的知识大汇总

想得到中间一位:123/10%10=2 (123/10=12,12%10=2)想得到最后一位:123%10=3。右移分为算数右移和逻辑右移(一般都采用算数右移)算数右移:右边丢弃,左边补原来符号位的数字。反码 = 原码 符号位不变,其他位按位取反。% 取模操作符的两个操作数必须都是整数,左移只有一种情况:左边丢弃,右边补0。按位与&→计算二进制,用补码来进行计算。正数的原反补都相同,负数的则需要计算。逻辑右移:右边丢弃,左边补0。例如有一个整数123,有0同时为0 全1为1。

2024-02-29 18:58:56 355

空空如也

空空如也

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

TA关注的人

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