- 博客(52)
- 收藏
- 关注
原创 总结C/C++中程序内存区域划分
1..栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时 这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内 存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。2.堆区(heap):⼀般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。3. 数据段(静态区)(static)存放全局变量、静态数据。4. 代码段:存放函数体(类成员函数和全局函数)的⼆进制代码。C/C++程序内存分配的⼏个区域。
2025-05-11 19:18:21
391
原创 C语言复习--动态内存管理
下面我们来看C语言中的动态内存管理,在之后的数据结构中会运用到C语言中的指针,结构体和动态内存管理,所以这部分还是比较重要的.下面进入正题.
2025-05-10 13:06:11
781
原创 C语言复习--柔性数组
格式大概如下struct Sint a;char b;int arr[];//柔性数组也可以写成struct Sint a;char b;int arr[0];//柔性数组。
2025-05-10 13:05:23
301
原创 C语言复习笔记--自定义类型
位段的声明和结构是类似的,有两个不同1. 位段的成员必须是 int 、 unsigned int 或 signed int,在C99中位段成员的类型也可以选择其他类型(char,一定要是整形大家庭中的).2. 位段的成员名后边有⼀个冒号和⼀个数字.(这个数字代表这个成员所占的比特位).如下,一个简单的例子struct Sint a : 2;int b : 3;char c : 5;既然知道了位段的大体结构,下面我们来看下大小struct S1char a : 2;
2025-05-07 22:19:56
921
原创 C语言复习笔记--数据在内存中的存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储 .大小端的概念一定要记清楚,不要记混了.
2025-04-29 22:42:23
992
原创 C语言加餐--浮点数比较
在之前就说过浮点数的相等不能直接用==来进行比较,这是为什么呢?这是因为浮点数在内存中存储会有一定误差的原因.但是之前当我们并没有验证,下面我们来验证一下.
2025-04-29 11:18:00
447
原创 C语言复习笔记--内存函数
在复习完字符函数和字符串函数之后,今天让我们复习一下内存函数吧.这一块的东西不太多,并且与之前的字符串函数有一些地方很相似,所以这里应该会比较轻松.
2025-04-27 22:12:18
885
原创 C语言复习笔记--字符函数和字符串函数(上)
在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,接下来我们就学习⼀下这些函数。首先来看下字符函数.
2025-04-18 21:12:41
828
原创 C语言复习笔记--指针(5)
在之前的复习中我们已经简单的了解了qsort函数的使用方式,下面我们接着上回的继续复习,来看看qsort函数的模拟实现.
2025-04-12 21:09:40
519
原创 C语言复习--assert断言
所以在 VS 这样的集成开 发环境中,在 Release 版本中,直接就是优化掉了.这样在debug版本写有利于程序员排查问题, 在 Release 版本不影响⽤⼾使⽤时程序的效率.代码在程序运⾏到这⼀⾏语句时,验证变量 p 是否等于 NULL。如果确实不等于 NULL ,程序继续运⾏,否则就会终⽌运⾏,并且给出报错信息提⽰.,在标准错误 流 stderr 中写⼊⼀条错误信息,显⽰没有通过的表达式,以及包含这个表达式的⽂件名和⾏号.然后,重新编译程序,编译器就会禁⽤⽂件中所有的 assert() 语句.
2025-04-01 22:08:42
309
原创 C语言复习笔记--操作符详解(下)
/变量的定义int m;int n;}p2, p3;//初始化//用.可以指定初始化,不需要加上结构体的名字//也可以直接初始化(不要忘记=)//如果内部嵌套了另一个结构体,要再加一个{}去初始化.
2025-03-29 22:59:40
1390
原创 C++string类使用
也算是半只脚进入了stl的学习了,今天就让我们参考string的文档介绍来学习使用string吧这篇中部分涉及到auto的使用,如果不记得了可以看下这篇博客,里面有auto在下面的用法讲解~.在使用string类时,必须包含#include头文件以及using namespace std.
2025-03-28 23:30:00
848
原创 C语言复习笔记--操作符详解(上)
大家好哦!晚间时间,有到了写博客的时间.今天简单的复习下操作符,下面进入正题~ 话不多说,大家看图: 以上的操作符,我们已经讲过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单⽬操作符.下面在学习一部分.操作符中有⼀些操作符和⼆进制有关系,但是二进制部分比较基础,就不过多写了.但是在这里补充下原码、反码、补码这部分内容. 整数的2进制表方法法有三种,即原码、反码和补码. 有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号
2025-03-27 21:39:01
1255
原创 C语言复习笔记--函数栈帧创建与销毁
第一行是指将ebp-14h这个位置上的值放入eax寄存器中,根据上面已经讲解过的指令可以得知ebp-14h这个位置就是存储b的位置,紧接着的指令是将eax压栈.所以这两句指令是指将b的值拷贝一份后压入栈顶,这两行的下两行与这两行相似,是将a的值拷贝一份后压入栈顶.进行之后的栈类似于下面图片.下面就到了call指令,call指令是调用函数的指令.call指令执行之后会跳转到call后面的地址所示的指令,并且将call后面紧跟着的指令地址压栈(方便表用后的返回).
2025-03-26 17:07:47
840
原创 C++模板初阶
class 类模板名// 类内成员定义其实现实中模板函数的的运用并没有模板类多,那在什么时候要用模板类呢?在C语言中一个数据结构中只能存同一类的元素.如果想用同一个数据结构产生两个不同类型的栈,那么在C语言中只能实现两个栈.可是两个栈中的方法都是相同的,这就让我们想到了模板.简单的模板类可以看下面代码.模板不建议声明和定义分离在不同文件中.在同一文件中分离时要像下面代码一样写明模板,要不然编译器在定义自中无法识别T.// 类模版public:_size = 0;
2025-03-24 22:28:43
791
原创 补充内存管理中的定位new
new (place_address) type或者new (place_address) type(initializer-list)下面看一些代码和注释来深入了解一下(因为还没有学习内存池的内容,所以暂时用operator new来开空间.因为内存池分配出的内存没有初始化,所以如果是自定义类型的对象,需要使用new的定义表达式进行显示调构造函数进行初始化.以上就是我学习的定位new的内容啦.initializer-list是类型的初始化列表。place_address必须是一个指针。
2025-03-24 21:00:35
163
原创 C语言复习笔记--VS调试技巧
bug本意是“昆⾍”或“⾍⼦”,现在⼀般是指在电脑系统或程序中,隐藏着的⼀些未被发现的缺陷或 问题,简称程序漏洞.对于他的出现有一个有意思的小故事.“Bug” 的创始⼈格蕾丝·赫柏(Grace Murray Hopper),她是⼀位为美国海军⼯作的电脑专家, 1947年9⽉9⽇,格蕾丝·赫柏对Harvard Mark II设置好17000个继电器进⾏编程后,技术⼈员正在进⾏ 整机运⾏时,它突然停⽌了⼯作。
2025-03-23 21:13:15
652
原创 C语言复习笔记--函数
这才是以后我们经常要用到的函数.自定义函数给程序员更多的创造性.⼀般我们在使⽤函数的时候,直接将函数写出来就使⽤了.但是如果我们将函数的定义放在函数的调⽤后边,在编译时就会出现禁告.这是因为C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的,当遇到函数调⽤的时候,并没有发现前⾯有该函数的定义,就会报出警告.那么怎么解决这个问题呢?就是函数调⽤之前先声明⼀下这个函数,声明函数只要交代清楚:函数名,函数的返回类型和函数的参数即可.如下,第一行就是对函数Add的声明.加了声明之后代码就可以正常编译了.
2025-03-22 23:34:31
849
原创 C语言复习-- static和extern
在上一篇中复习了函数,这里单独提一下函数中的最后一个小重点static和extern.static 和 extern 都是C语⾔中的关键字.但是在讲解他们之前要先说下作⽤域和⽣命周期.
2025-03-22 23:33:52
483
原创 C++/C内存管理
也是用一段简单的代码来直接引入.class Apublic::_a(a)~A()private:int _a;上面代码输出的结果如下图.与内置类型不同的是,在自定义类型中,new会在开辟空间之后调用自定义类型的默认构造函数初始化空间,且delete会在释放之前调用析构函数.而malloc和free则只是开辟和释放空间.
2025-03-21 23:12:45
1443
原创 c++类和对象(下篇)下
下面就来补充一下c++雷和对象最后一点内容.首先先补充一下上一篇博客上最后学习的静态成员变量的小练习下面就是题解.灵活的运用了静态成员变量不销毁的特点,建立数组利用构造函数来完成n次相加.下面我们开始今天的学习.
2025-03-19 22:45:29
1065
原创 C语言复习笔记--分支/循环(涉及到的函数简单介绍)
这个函数是用于因为有隐式类型转换的存在,也可以用于求int类的平方根.如果将sqrt直接用于printf的函数内要记得用%lf占位符来占位,用%d的话会因为整形与浮点型储存不同导致错误.rand与srand。
2025-03-12 20:08:58
388
原创 C语言复习笔记--分支/循环(下)
在上一篇复习笔记中,主要了解了分支和部分操作符.这篇我将主要记录下循环的内容,还有一个小练习去运用下所复习的分支循环这部分~
2025-03-12 19:29:46
745
原创 C语言复习笔记--分支/循环(上)
:逻辑取反运算符(改变单个表达式的真假).&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假).|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假).经典练习:闰年的判断int main()int year;
2025-03-11 22:07:59
894
原创 c++类和对象中篇(补充)
在之前的其他两篇文章中已经介绍了大部分默认成员函数的内容了.这篇就是上次说道的小篇幅介绍其他两个默认成员函数的博客啦~在这之前的两篇的传送门放在下面啦.那么我们进入今天的学习.
2025-03-11 19:32:33
387
原创 c++中关于.*的简单了解
关于.*的使用已经在上述代码的注释中做了简要的说明,要注意pf并不是A中的成员,它是全局中定义的A中成员函数的指针.所以.*不可以拆解开看,要合在一起去看.其实.*这个操作符在日常运用一定也不多,但是既然在不可以重载的操作符中提到了就通过一段小代码让我们来了解一下它.
2025-03-10 19:31:55
157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人