自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 顺序表专题

当我们想要使⽤⼤量使⽤同⼀类型的数据时,通过⼿动定义⼤量的独⽴的变量对于程序来说,可读性⾮常差,我们可以借助数组这样的数据结构将⼤量的数据组织在⼀起,结构也可以理解为组织数据的⽅式。常⻅的数值1、2、3、4.....、教务系统⾥保存的⽤⼾信息(姓名、性别、年龄、学历等等)、⽹⻚⾥⾁眼可以看到的信息(⽂字、图⽚、视频等等),这些都是数据。求数组的⻓度,求数组的有效数据个数,向下标为数据有效个数的位置插⼊数据(注意:这⾥是否要判断数组是否满了,满了还能继续插⼊吗).....案例:蔬菜分为绿叶类、⽠类、菌菇类。

2024-08-10 22:07:31 327

原创 C语言预处理详解

(假定某个程序中声明了⼀个某个⻓度的数组,如果机器内存有限,我们需要⼀个很⼩的数组,但是另外⼀个机器内存⼤些,我们需要⼀个数组能够⼤些。结果是11,为什么呢,因为我们传入的是5+1,#define的优先级很高,所以直接进行了预处理,就是5+1*5+1,结果显而易见就是11,当我们使用宏的时候要注意优先级的问题,此时我们可以用()将a保护起来,此时就可以得到正确的结果了,结果是55,还是因为优先级问题,double将两个数相加,直接替换成了5+5,但是并不会进行计算,10*+5==55,结果由此而得。

2024-08-07 00:01:51 1052

原创 c语言编译和链接

我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add 函数和 g_val变量的地址,所以暂时把调⽤ Add 的指令的⽬标地址和 g_val 的地址搁置。词法分析就是将源码逐个分析,例如int arr[] = {0},int是定义整数类型,arr是一个标识符,[是左括号]是右括号,=是等号,{是左花括号,0是一个整数,}是右花括号,机器就是逐个进行分析的,

2024-08-06 14:40:10 578

原创 C语言文件操作

如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了指针和⽂件的关系。⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件。每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名。

2024-08-06 14:14:34 559

原创 c语言动态内存管理

C/C++程序内存分配的⼏个区域:1. 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。2. 堆区(heap):⼀般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配⽅式类似于链表。3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。

2024-07-23 00:21:53 973

原创 联合和枚举

联合体和结构体类似,但是又结构体又不同,结构体中的每个成员都是独立的,修改其中任意一个值不会影响另外一个值,但是在联合体中,修改其中一个值,一定会有另一个值跟随他发生改变,联合体中所有值都共用同一块内存空间。第一个输出8,因为char型数组的对齐数是1,而大小是5,int型对齐数是4,大小是4,所以联合体大小应该是其中最大的成员大小5,但是5并不是最大对齐数的整数倍,因此内存大小变成了8.我们仔细分析就可以画出,un的内存布局图。在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐较严格。

2024-07-19 01:30:50 863

原创 C语言结构体

1. 位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以选择其他类型。2. 位段的成员名后边有⼀个冒号和⼀个数字。int b :4;A就是⼀个位段类型。那位段A所占内存的⼤⼩是多少?

2024-07-19 00:03:22 887

原创 数据在内存中的存储

大小端是整数存放在内存中的方法,小端存放就是从低地址向高地址,位数小的一端向位数大的一端存放,大端存放则反之。

2024-07-14 22:34:57 723

原创 c语言内存函数

• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。这个函数在遇到 '\0' 的时候并不会停下来。• 如果source和destination有任何的重叠,复制的结果都是未定义的。对于重叠的内存,交给memmove来处理。memcpy的模拟实现。

2024-07-07 00:51:57 240

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

C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h。

2024-07-02 23:00:24 441

原创 手撕指针(四)

本质上是一个数组,每一个元素是函数指针parr先和[]结合,先成为一个数组,然后每个元素是函数指针,是int (*函数名)()类型的函数指针。

2024-03-27 23:14:26 324

原创 手撕指针(三)

指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪⾥?二级指针就是再次将指针的地址存放到指针里面。对于⼆级指针的运算有:*ppa 通过对ppa中的地址进⾏解引⽤,这样找到的是 pa , *ppa 其实访问的就是 pa .**ppa 先通过 *ppa 找到 pa ,然后对 pa 进⾏解引⽤操作: *pa ,那找到的是 a .

2024-03-10 20:14:16 956 2

原创 手撕指针(二)

一般情况下数名是数组首元素的地址特殊情况但在sizeof()中,数组名是数组整个整个数组的⼤⼩&取地址操作符是取出的数组的整个地址当计算一个数字的长度时,&取出的是整个数组的整个的大小,是40个字节,而arr【0】只是一个数组元素的地址大小,由此可以计算出整个数组有10个元素。此时不难发现,arr[0]和arr的地址一样,区别就在于二者进行计算时一个加减只变化了4个字节,而arr一次变化了40个字节,arr+1一次跳过的是他本身的字节大小而&arr+1一次跳过的是整个数组的大小的字节。

2024-03-01 13:41:18 408 1

原创 手撕指针(一)

先用一个简单的实例引入内存的概念,例如在生活当中宿舍楼宿舍楼里的每一个房间都是有房间号的,例如101,501,519等等,每个房间都是有对应的数字号,并且这些数字号不会重复,有了房间号,你的朋友就能快速找到你,可以提高效率。我们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何⾼效的管理呢?其实也是把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。

2024-02-06 21:18:06 939 10

原创 操作符详解

代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化struct Node n2 = {20, {5, 6}, NULL};//结构体嵌套初始化。

2024-01-25 16:01:05 853

原创 函数和数组实现扫雷游戏

在继续分析,当我们点击一个位置之后,这个位置附近的8个方块的1和0的个数应该被存储起来并且打印出,被我们看到,这样才能进行下一步的游戏,但是,如果单单一个数组,雷,雷的个数,存储类型太多,容易产生歧义,因此,可以创建两个数组,为了保持神秘感,在扫雷之前,各个位置应该存放‘*’并打印出来,为了保持两个数组的一致,可以使用两套相同类型的数组,雷和非雷可以用'1'和'0'表示。(1)扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需要⼀定的数据结构来存储这些信息。因此,这一步骤的设计到二维数组。

2024-01-15 12:08:13 556

原创 函数的递归

要想完成1234的分离,首先把4分离出来,其次在分离3,一直分离到1,传递参数进入子函数,1234>9,在进入123,,123也大于9,进入12,还是大于9,在进入1,1

2024-01-12 17:21:59 471 1

原创 输入输出中一些小秘密第一章

在输出中,n表示输出的数子宽度至少为n,如果输出的数小于n则自动在前面补0,大于n则直接输出实际数,类似于输出的%d。当大于四位数时则只读取前面的四位数。当小于等于4位数时则读取实际数。最后预祝每一个努力的人都能成功。此时是实际数宽度小于n。

2023-12-30 01:13:35 417

空空如也

空空如也

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

TA关注的人

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