自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每天两个知识点 C/C++ 中的预处理器指令及其用途&宏定义和函数调用的区别

宏定义(Macro Definition)和函数调用定义和展开时机宏定义:在编译阶段由预处理器进行文本替换,不进行类型检查。函数调用:在运行时由程序调用,有严格的类型检查。执行方式宏:宏的展开是简单的文本替换,可能会导致代码膨胀,如果宏定义复杂,还可能引发难以调试的错误(如操作符优先级问题)。函数:函数调用是通过调用栈实现的,有参数传递和返回值处理机制。性能宏:由于宏在编译时展开,如果宏的使用非常频繁且展开后的代码较小,可能会略微提高性能(减少函数调用的开销)。但过度使用宏可能导致代码难以维护。

2024-11-10 21:27:31 261

原创 每天两个知识点 new或malloc在申请空间时可申请的大小&C++循环引用及其注意事项

循环引用是指两个或多个对象之间相互持有对方的引用,从而形成一个环状的引用关系。例如,类A和类B互相引用对方,即类A中包含一个指向类B对象的指针(或引用),而类B中包含一个指向类A对象的指针(或引用)。函数如果超出可申请的大小就会分配异常。

2024-11-08 22:44:02 389

原创 每天两个知识点 C++ 中类的三大特性是什么?&什么是构造函数和析构函数?它们的作用是什么?

构造函数(Constructor):构造函数是一种特殊的成员函数,它会在创建对象时自动调用,用于初始化对象。构造函数的名称必须与类名完全相同,并且没有返回类型。构造函数可以是默认构造函数(无参数)、参数化构造函数(带参数)或者拷贝构造函数(用于根据另一个对象初始化新对象)。构造函数的主要作用是初始化对象的成员变量,分配必要的资源,以及执行其他初始化任务。析构函数(Destructor):析构函数也是一种特殊的成员函数,它会在对象生命周期结束时自动调用,用于执行清理工作。析构函数的名称是在类名前加上波浪号(

2024-11-08 22:31:18 183

原创 每天两个知识点 new和malloc的区别及用法&malloc分配失败会导致什么问题

指针指向一个不存在的内存地址,任何试图访问或修改这个地址的操作都是非法的。指针可能会导致未定义行为,通常表现为程序崩溃或数据损坏。可以更容易地通过异常处理机制来管理内存分配失败的情况。,而程序员没有检查这个返回值,那么继续使用这个。,并在需要时处理失败的情况。分配内存时,应该总是检查返回值是否为。为了避免这种情况,当使用。

2024-11-07 07:34:33 369

原创 每天两个知识点 C++ 中类的三大特性是什么?&什么是构造函数和析构函数?它们的作用是什么?

构造函数(Constructor)构造函数是一种特殊的成员函数,它在创建对象时自动调用,用于初始化对象的成员变量。构造函数没有返回类型,甚至连void都没有。它的名称必须与类名完全相同。构造函数可以重载,即同一个类可以有多个构造函数,只要它们的参数列表不同。构造函数的主要作用是初始化对象的状态,确保对象在创建时处于有效状态。析构函数(Destructor)析构函数也是一种特殊的成员函数,它在对象生命周期结束时自动调用,用于释放对象占用的资源。析构函数的名称是类名前加上波浪号(

2024-11-05 14:26:20 374

原创 每天两个知识点 拷贝构造函数和赋值运算符重载的作用&C++模板及其类型

其主要作用是确保正确地复制对象的数据成员,包括处理动态分配的内存(如指针指向的数据)以避免浅拷贝问题。重载赋值运算符的主要目的是确保赋值操作能正确地处理对象的数据成员,避免资源泄露和自赋值问题。)只会进行浅拷贝,这可能不适用于所有情况,特别是当对象包含动态分配的内存或需要特殊处理的资源时。拷贝构造函数是一个特殊的构造函数,它用于创建一个新对象,并将其初始化为另一个同类型对象的副本。来声明一个函数模板,后跟一个模板参数列表(通常是一个或多个类型参数),然后是函数定义。这定义了一个可以存储任意类型元素的栈。

2024-11-05 14:24:05 492

原创 每天2个知识点 结构体和联合体的区别及能否缺省名字&结构体可以包含函数吗?在C和C++中的不同

在C语言中,结构体不能包含函数。结构体只能包含数据成员。如果需要与结构体相关的函数,通常的做法是将这些函数声明在结构体外部,并通过结构体指针或引用来操作结构体数据。:在C++中,结构体和类非常相似,结构体可以包含成员函数(包括构造函数和析构函数)。C++中的结构体和类的唯一主要区别在于默认访问权限:结构体的成员默认是。

2024-11-03 21:36:29 263

原创 每天2个知识点 C、C++中字符串的存储方式有何不同?&如何在C下比较两个字符串是否相同?

(在POSIX系统上)等函数,但这些函数并不是C标准库的一部分,因此其可用性可能依赖于具体的平台和编译器。在C和C++中,字符串的存储方式存在显著的区别,主要体现在字符数组和字符串类(如。函数比较两个字符串的字符,直到遇到不同的字符或遇到字符串结束符(如果需要进行不区分大小写的比较,可以使用。在C语言中,比较两个字符串是否相同通常使用标准库函数。(在Windows上)或。

2024-11-03 21:27:53 205

原创 每天2个知识点 C/C++中数组定义和初始化的方式有哪些?&数组名字有什么含义?

在C和C++中,数组是一种基本的数据结构,用于存储相同类型的多个元素。静态数组:在编译时确定数组的大小。

2024-11-01 20:27:38 181

原创 每天2个知识点 new 和 delete 运算符在 C++ 中的作用&什么是内存泄漏?如何避免内存泄漏?

内存泄漏:在程序运行过程中,动态分配的内存没有被适当地释放,导致这部分内存无法被重新使用,直到程序结束。这可能导致程序消耗越来越多的内存,最终可能导致系统资源耗尽,程序崩溃或系统变得非常缓慢。如何避免内存泄漏确保每个new都有对应的delete:每当你使用new分配内存时,确保在适当的时候使用delete释放它。对于数组,使用delete[]。使用智能指针:C++11 引入了智能指针(如和),它们可以自动管理内存,当智能指针对象被销毁时,它们会自动释放所管理的内存。避免异常导致的内存泄漏。

2024-10-31 21:52:33 379

原创 每天2个知识点 空指针和野指针的概念及避免野指针的方法&C/C++中内存的区域划分及存储内容

空指针:野指针:在C/C++中,内存通常被划分为以下几个区域:代码区(也称为文本区):全局/静态存储区:栈区:堆区:自由存储区(在某些描述中提及,但并非C/C++标准中的正式术语):

2024-10-30 18:36:36 306

原创 每天2个知识点 指针是什么&引用和指针有什么区别

指针是一种数据项,它的值是一个内存地址。这个地址指向的地方,就是指针要访问的数据。可以把指针想象成一把钥匙,它打开了我们访问内存的“门”。每个变量在内存中都有一个独特的地址,而指针就是用来存储这些地址的。通过指针,我们可以直接访问和修改存储在那个地址处的数据。

2024-10-29 17:47:32 133

原创 每天2个知识点 递归函数&break 和 回调函数

回调函数是一种作为参数传递给另一个函数的函数。这种机制允许一个函数在另一个函数执行完成后执行,或者在特定事件发生时执行。

2024-10-28 18:46:56 162

原创 每天2个知识点 switch-case 语句&函数参数传递的方式

语句用于在多个代码块之间进行选择执行,它通常基于一个变量的值来决定执行哪个代码块。有些语言还提供了其他形式的传递方式,如。(本质上是引用传递的一种形式)。

2024-10-27 18:41:36 404

原创 每天2个知识点 C/C++ 中的三种基本控制结构&break 和 continue 在循环中的作用

1)简述 C/C++ 中的三种基本控制结构(顺序、选择、循环)。

2024-10-26 19:34:28 143

原创 每天2个知识点 运算符优先级&三目运算符

运算符优先级决定了在表达式中哪个运算符先被计算。当表达式中有多个运算符时,优先级高的运算符会先被计算。如果两个运算符的优先级相同,则它们的结合性(左结合或右结合)决定了计算的顺序。三目运算符(也称为条件运算符)是一种简洁的条件表达式,它允许在单行中执行简单的条件判断。如何运用三目运算符 比较三个数 选出最大值或者最小值,写出对应代码。1)什么是运算符优先级?请给出一些容易混淆的运算符优先级示例。2) 解释一下三目运算符(?(可以把运算符优先级的表格列出来)三目运算符选出最大值。

2024-10-25 17:54:19 226

原创 c语言实现日历

【代码】c语言实现日历。

2023-07-25 18:18:26 466

原创 错题集(3) 机器翻译

【代码】错题集(3) 机器翻译。

2023-07-19 21:19:49 70

原创 错题集(2)【蛇形填数】【图像旋转】

【代码】错题集(2)【蛇形填数】【图像旋转】

2023-07-19 16:51:20 75

原创 Getmemory的几个经典的关于内存的笔试题

经过了static修饰之后,处于栈区的变量延长了生命周期,可以在群文件范围内进行访问;所以在Getmemory函数结束的时候p的内存被自动释放,无法进行strcpy操作;过早的释放了str的内存,在注释那行之后str已经没有地址了;p是一个处于栈区的变量,生命周期只从定义到区间的‘}’结束;释放的空间地址和申请的空间地址必须相同,不能随意偏移;偏移了从堆区申请的空间地址;同TEST 1,栈区的空间自动释放,无法输出。输出"hello world";输出"hello world";是合法的,能够正常输出;

2023-07-17 21:47:07 100 1

原创 错题集(1) 津津的储蓄计划

【代码】错题集(1) 津津的储蓄计划。

2023-07-17 20:50:15 77 1

原创 c语言二维数组错误引用形式

B.*(ps+3)是对数组首元素地址进行+3操作后,再进行 * 运算取得元素。但是s[ ][ ]是二维数组,只进行一次*运算的话得到的是一维数组的值,要想把地址转变为s中的元素的话应该进行二次取 *。问题和B选项相类似,只进行一次*运算的话得到的是一维数组的值,二维数组的地址。A.ps+1中ps是数组首元素地址,进行+1运算操作后地址偏移,但依然是地址,而不是数组元素。二维数组可以看成是每个元素都是一个数组;则对s数组元素的正确引用形式是();

2023-07-17 16:32:06 413 2

原创 字符串空格替换,不能申请新的缓冲区

通过空格数量(count)得到新字符串长度(newlength = length + 6*count);查出原字符串的长度(length),再遍历字符串得到空格数量(count);再从新字符串的末尾开始,逐个字符替换。

2023-07-16 19:53:11 92 1

空空如也

空空如也

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

TA关注的人

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