- 博客(22)
- 收藏
- 关注
原创 数据结构(1)--> 顺序表
顺序表存储定义: 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构,顺序表功能的实现借助于数组,通过对数组进行封装,从而实现增删查改的功能,严格意义上来说(数组无法实现删除数据的功能)。
2024-01-27 21:55:45
540
原创 c/c++ 文件操作(1)
每个被使用的文件都会在内存中开辟一个相应的文件信息区,用来存放该文件相关信息(文件名,文件状态,或者文件位置),这些信息保存在一个由系统声明的结构体变量中,该结构体取名为FILE.所以我们可以定义一个FILE指针来维护结构体内部数据,如下:FILE *pf;//定义pf是一个指向FILE 类型数据的指针变量。
2023-12-14 12:35:27
663
1
原创 c/c++ 柔性数组
int arr[ ];//未知大小数组,并且是整个结构体最后一个成员。但是结构体总共占的大小应该是偏移量的整数倍,所以既为8个字节。char 1个字节,vs自带对齐数是8,所以偏移量是1个字节。int 4个字节,vs自带对齐数是8,所以偏移量是4个字节。这个时候结构体所占字节空间是多少?在C99新增特性中,结构体的。,这样就叫做柔性数组成员。
2023-12-10 11:20:49
906
1
原创 c/c++ malloc、calloc、realloc and free
需要头文件 #include<stdlib.h>sizemalloc函数作用是向内存堆区申请一块连续的空间,若是申请成功,则返回一个指针,这个指针是指向这段连续空间的首地址,若是开辟空间不成功,则返回NULL指针。需要注意的是,向堆区申请空间,都必须检测一下空间是否开辟成功,可以利用assert函数。其次,参数里是需要开辟的。
2023-12-09 21:26:48
1592
原创 c/c++ 结构体、联合体、枚举
结构体内存对齐规则:1、结构体的第一个成员对齐到结构体变量起始位置偏移量为0的地址处2、其他成员变量要对齐到某个数字Linux中gcc没有对齐数,对齐数就是该成员变量自身大小。3、为最大对齐数(结构体中每个成员都有一个对齐数,所有对齐数最大的)整数倍。4、如果嵌套了结构体,嵌套的结构体成员对齐到自己内部成员最大对齐数的整数倍,然后结构体的整体大小就是运用offsetof---宏 (需要包含头文件#include)---->计算结构体成员相较于起始位置的偏移量。
2023-12-08 13:04:21
799
原创 c/c++ 数据在内存中的存储
数据在内存中存储,不同的数据类型对应着不同的字节数,char类型数据占据一个字节,short类型数据占据2个字节,int类型数据占据4个字节,那么当超过一个字节的数据在内存中存储的时候,就会衍生出存储顺序的问题,分别为:大端存储和小端存储。大端字节序存储模式:是指数据的,而数据小端字节序存储模式:是指数据的,数据的高位字节保存在内存的高地址处。怎么理解数据的低位和高位?参考如下十进制当我们知道了数据的低位跟高位含义后,我们来通过编译器看看在vs里面数据是如何存储的?
2023-11-29 18:27:25
1065
1
原创 c/c++ 内存函数
/本身void*无法强转,先转成char*后,再解引用return ret;i < 10;但是若是作用将memcpy作用在同一个对象上,目标区间和来源区间有重合部分,那么结果有可能会导致错误。所以对于有重叠部分,一般交给memmove处理。
2023-11-28 15:05:29
519
原创 自定字符串函数
return ret;return 0;追加函数首先得要确定目标函数中'\0'出现的位置while (*p1!//此时p1----> '\0'p1++;p2++;return ret;return 0;s1++;s2++;return 0;return 1;int main()printf("大于\n");printf("等于\n");elseprintf("小于\n");
2023-11-27 11:17:21
536
原创 c/c++ 字符串函数(1)
字符串函数可以简略分为2种,一种是字符串函数不受长度限制,以是否遍历到'\0'为结束标志,另外一种字符串函数是可以人为主动控制长度,这种可以称为长度受限的字符串函数。
2023-11-24 13:40:53
457
1
原创 c/c++ :sizeof 对比 strlen
sizeof:strlen:总结: size strlen sizeof 不挑数据类型 strlen只能针对字符串使用 sizeof--> 操作符 strlen----> 库函数,要包括 <strling.h> 头文件 计算操作数所占内存空间大小,单位是字节 统计字符串长度,以发现 '\0'为结束标志,若没有发现
2023-11-19 14:38:45
30
原创 c/c++ 函数指针数组
将 函数指针 ()存到一个数组中,那么这个数组就叫做函数指针数组,函数指针数组的写法跟 函数指针的写法很类似,写法如下:| | pt 数组里调用每个元素(既独立的每个函数时,需要传递的参数)| pt这个数组里每个函数返回的值类型。
2023-11-16 22:47:05
352
1
原创 c/c++ 函数指针
正如同数组一样,我们也可以通过 & 取地址操作符得到函数的地址。但是函数地址 跟数组 地址在是否加 & 操作符上还是略有不同。数组名:是数组这种数据的首元素地址&数组名:整个数组的地址数组名加1 与 &数组名+1 是有区别的,数组名+1 是访问整个数组的下一个元素,而&数组名+1 是跳过整个数组。写法:int (*p)(参数列表)=函数名;| 函数指针名| 函数指针指向的函数调用后返回的数据类型,这里便于理解,以int为列。
2023-11-15 21:28:17
649
1
原创 c/c++ 指针 #2
从编译器中可以得出结论,数组名、数组首元素地址以及数组自身的地址均指向同一个地址那么这3种有什么区别呢?我们将上列代码每个地址都+1。
2023-11-11 21:55:45
214
1
原创 c/c++ 指针 #1
计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,其实也是把内存划分为⼀个个的内存单元,每个内存单元的大小取一个字节(8bit)。计算机内是有很多的硬件单 元,而硬件单元是要互相协同⼯作的。所谓的协 同,至少相互之间要能够进行数据传递。但是硬件与硬件之间是互相独立的,那么如何通信呢?答案很简单,用"线"连起来。CPU和内存之间也是有大量进行数据交互,所以,两者必须也用线连起来,就是借助地址总线。
2023-11-09 22:21:57
219
1
原创 #c语言操作符总结
2 原码:10000000 00000000 00000000 00000010-2 反码:111111111 11111111 11111111 11111101-2 补码:111111111 11111111 11111111 11111110注意: a & b 的结果并不会改变 a 跟 b ,只是将 a& b的结果 给了 c,但是并不会影响 a 跟 b 自身的数值。所以衍变如下:根据原则,两个同时为1才为1,有一个为0 就是 0。
2023-11-05 19:47:23
99
原创 #2 扫雷游戏
来接收并显示变量信息。然后这个题目中要求打印的是 9*9 棋盘,但是我们并不能设置字符数组大小为 9*9 ,不然容易出现越界这个情况,不容易处理,详细见图。因为设置了两个二维数组,mine数组用来保存及跟新当前棋盘盘内信息,另外一个数组用来显示是否有雷,所以可以写一个函数用来初始化,唯一不同的是初始化里的实际参数传入的不一样。main函数中设置一个switch分支语句用来接收变量input,然后根据input接收到的数值执行相对应的语句,扫雷游戏的分支可以设置的相对简单,就2个分支即可。
2023-10-31 11:48:35
32
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人