自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c语言之文件操作

在C语言中,文件通常指的是存储在计算机存储设备上的数据集合。这些数据可以是文本、二进制数据或其他格式。C语言提供了标准库函数来处理文件,如打开、读取、写入和关闭文件。文件操作是通过文件指针来完成的,文件指针指向文件的当前位置。使用文件操作函数,如等,可以实现对文件的读写操作。磁盘(硬盘)上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。

2024-05-28 23:33:16 698

原创 1.柔性数组

C/C++程序内存分配的几个区域:1.栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。《函数栈帧的创建和销毁》堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由0S回收。分配方式类似于链表。数据段(静态区):(static)存放全局变量、静态数据。

2024-05-14 23:20:18 739

原创 动态内存管理

p所指向的空间就会还给操作系统,但是str指向的地址还是这个地址,只不过变成野指针了,如果p指向的那块空间,没有被占用就能打印出来,如果被占用的话就打印不出来。但是呢,这串代码打印出来就是10,其实这就是巧合,就是释放的空间刚好没有被覆盖掉。,就是h的地址,之后我们就会把这个地址赋给str,但是呢,p是getmemory函数里面的局部变量,你如果一出。,这个数组里面的元素是hello world,最后返回数组名,我们知道数组名是首元素的地址,也就是。下面我在给一个简单的代码,和上面的代码错误是一样的。

2024-05-11 22:46:47 1314 1

原创 动态内存管理

我们已经掌握的内存开辟方式有:但是上述的开辟空间的方式有两个特点:空间开辟的大小是固定的。数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整。但是对于空间的要求,不仅仅是上述的情况,有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足。C语言引入了动态内存开辟,让程序员自己可以申请和释放空间,就比较灵活了。 malloc 函数是 C 语言标准库中的一个函数,用于动态分配内存。它在 <stdlib.h> 头文件中声明,用于在堆(heap

2024-05-07 23:25:30 1178 1

原创 自定义类型:联合体和枚举

当这个值被赋给联合体 un 的 c 成员时,它会覆盖 i 成员的最低有效字节。当这个整数值被赋给联合体 un 的 i 成员时,联合体的 c 成员也会受到影响,2.当最大成员不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。,所以它会存储 0x44 ,因为这是 i 的最低有效字节。乂,你看输出的地址都是一样的,这怎么说,就是符合这个联合体的特点。这里还是要注意一下,这里的说明很清晰是。给联合体其中一个成员赋值,其他的成员的值也跟着变化。

2024-05-04 17:55:31 1162 1

原创 自定义类型:结构体

位段是基于结构体的。位段的声明和结构是类似的,但是还是有1.位段的成员必须是int ,unsigned int或signed int,在c99中位段成员的类型也可以选择其他类型。2.位段的成员名后边有一个冒号和一个数字。//位段的成员名后边有一个冒号和一个数字。int _b:5;int _c:10;int _d:30;在C语言中,位段(bit-field)是一种特殊的结构体成员它允许程序员指定结构体中成员所占用的位数。位段通常用于节省空间,

2024-05-03 21:34:59 977 1

原创 自定义类型:结构体·

就是。

2024-05-02 23:52:56 12 1

原创 自定义类型:结构体

结构体(Struct)是一种自定义的数据类型,它允许将多个不同类型的变量组合在一起形成一个单一的类型。在编程中,结构体通常用于将相关的数据项组织在一起,以便于管理和操作。结构体的定义通常包括以下几个部分:这是结构体的标识符,用于在代码中引用该结构体。2. 成员变量:这些是结构体内部的变量,每个成员变量都有自己的类型和名称。int age;//分号不能丢在这个例子中,`Person` 是结构体的名称,它包含三个成员变量。

2024-05-01 22:25:41 896

原创 数据在内存中的存储

关于整数在内存中的存储我还有几个题没有给完,下面来一起看一下:补充一点%x是以和十六进制打印整数的。OK了现在习题就完了,这个题价值挺大的,我也是挺费劲的讲解出来。如果有什么不对的地方希望大家能够提出来。

2024-04-28 23:18:37 991 1

原创 数据在内存中的存储

大端(Big-Endian):最高有效字节(Most Significant Byte, MSB)存储在最低的内存地址上。也就是说,数据的高位字节先存储,低位字节后存储。这种存储方式在人类阅读习惯上比较直观,因为数字的高位通常更重要。小端(Little-Endian):最低有效字节(Least Significant Byte, LSB)存储在最低的内存地址上。也就是说,数据的低位字节先存储,高位字节后存储。这种存储方式在计算机内部处理时更为高效,因为CPU处理数据时通常是从低地址开始的。

2024-04-23 21:01:59 1086

原创 c语言内存函数

memcmp 会从第一个字节开始比较,发现前两个字节相同(都是 97 和 98),但在第三个字节上发现不同(99 vs 100)。如果返回 0,则两个字符串在指定的比较长度内是相等的。在比较字符串时, memcmp 会逐字节比较两个字符串的字节序列,直到遇到不同的字节或者达到指定的比较长度。在 ASCII 编码中,每个字符对应一个字节的数值,数值较小的字符在字典序上排在前面。它按照字节比较,从 str1 和 str2 的第一个字节开始,逐字节比较,

2024-04-19 23:52:06 791 2

原创 C语言内存函数

如果我想拷贝的一串数字在目标数字。

2024-04-18 14:01:17 764 3

原创 字符串函数

strtok 函数是一个标准库函数,用于在C语言中对字符串进行分隔。它将一个字符串分割成多个子字符串,这些子字符串由指定的分隔符分隔。 strtok 函数会修改原始字符串,因此在使用它之前,通常需要复制原始字符串。接下来我们来看一下函数原型: str 是要分割的字符串。sep 是用于分隔字符串的分隔符集合。 strtok 函数的工作原理是这样的: 1.sep参数指向一个字符串,定义了用作分隔符的字符集合2.第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或

2024-04-16 23:17:55 477 1

原创 字符函数与字符串函数

由于 "Hello" 在两个字符串中都是相同的,所以函数会返回 0,表示两个字符串的前 5 个字符相同。strncmp 函数是 C 语言标准库中的一个函数,用于比较两个字符串的前 n 个字符。在C语言中, strncpy 函数是一个标准库函数,用于将一个字符串(源字符串)复制到另一个字符串(目标字符串)中。是 C 语言标准库中的一个函数,用于将一个字符串追加到另一个字符串的末尾。这个函数的原型定义在。执行后,dest的内容为"Hello",后面跟着4个空字符,以确保它是一个正确的C字符串。

2024-04-14 13:57:26 829 1

原创 字符函数和字符串函数

终于把指针搞完了下面就是字符函数和字符串函数的讲解了,准备好。

2024-04-09 23:16:27 1444 1

原创 深入理解指针(6)

我们可以看一下这串代码,在case1234中你不断地在调用前面的函数,而且很多都是重复的代码是不是感觉很麻烦,不简明,所以我们利用今天所学来解决一下。我们学了整型数组,字符数组,指针数组,我们还学过整型指针,字符指针,函数指针,数组指针而今天我们要学。上面的解释只是讲了个调用的大概,关于精确的函数比较和交换的解释,在上述的代码中就可以找到。,用于指针访问结构体中的成员。在进行这节的讲解,还会用到上述的代码,但是呢,我们要对最原始的代码,使用。,我们如果想把它改造成能够排序任意类型的函数,就是下面的样子。

2024-04-05 12:36:36 1095 1

原创 深入理解指针(5)

二维数组传参,形参部分可以写成数组,也可以写成指针。刚才回头看了一遍课,发现了一个挺本质的东西:arr+i产生的是下标为i元素的地址: arr是起始地址,+i就是跳过i个元素,产生的还是地址。arr只是提供的的起始地址,而i就是偏移量,[i]就相当于解引用,就是这样才能找到arr里面的元素。所以说这两个东西本质上是一样的。

2024-04-01 23:03:14 783

原创 深入理解指针(4)

这些就是今天的总结与归纳,还是那句话:还请兄弟们多多提问题,我才会更加进步,写的更加严谨。

2024-03-30 11:15:35 915 2

原创 深入理解指针(3)

我们知道创建一个变量的话,他们的地址都是随机的,但是呢,变量在销毁之前只要知道这个地址,那么这个变量就是可以访问的。首先我们知道打印出来的地址是16进制的数,他们相差28,要把28转化成10进制的数就是40,这才是它们之间的地址真实差值,28只是在16进制是28并不是正儿八经的数差。,这里的数组名表示的是整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)。,sizeof中单独放数组名,这里的数组名表示的是整个数组,计算的是整个数组的大小,单位是字节,

2024-03-28 23:42:13 932

原创 深入理解指针(2)

能,n的的地址是0x0012ff40带回main函数把他存到p这个指针变量里面去这是p里面存的地址就是n的地址,但是n在完成之后出了这个函数就会销毁这时n的地址也就销毁了。有的,就是我们刚说的指针 - 指针还是arr这个数组里面的内容是a b c d e f \0如果我们知道a的地址还知道\0的地址用这两个相减不就是这个中间的字符个数嘛。我们在上篇已经说过这里就不再详细的进行说明,这里只说一个重要的点,当指针进行+-整数的时候,它所访问的空间就会跳过,指针类型所对应的字节乘以整数个字节。

2024-03-27 23:02:36 1133

原创 深入理解指针(1)

在深入理解指针之前我们要先搞明白什么是指针。所谓指针就是“地址”那什么是地址呢?地址就是“内存单元的编号”?那怎么理解内存单元编号.这里引用鹏哥的例子容易理解 :有一栋宿舍楼,那么这栋宿舍就是内存 而这栋宿舍楼中的每一个房间就是一个个的单元,但是光有房子还不行查找起来非常麻烦,所以还要给房间编上号码,这样就形成了这栋楼的房间单元编号,而这就是“内存单元编号” 也就是“地址”,地址的名字就是“指针”。so,内存单元编号 =地址 = 指针。但是这里的指针不是我们口头上的指针,

2024-03-27 00:01:25 676

原创 重拾c语言

作为一个大一下学期的学生,c在上学期就学过去了,作为认知缺陷的自己在上学期浑浑噩噩,不知道规划,不认同c,期间也打算学c的课程,但也不了了之了。一是大学嘛水课很正常。1:每天学的课程受益匪浅的话或者是努力很久恍然大悟的知识一定要搞一篇学习心得包括学习的知识框架 具体内容 实操代码作为课题发布在博客上。这就是要努力的方向,让CSDN见证我的成长,希望功夫不负有心人期待四年之后的成果,共同加油!重拾C语言,初入CSDN想从一个好的阶段开始,写下开篇。在有了能力的基础上尽量去参加比赛,去发展个人。

2024-03-25 23:12:36 200

空空如也

空空如也

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

TA关注的人

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