
C/C++
文章平均质量分 79
-
码的艺术家
https://linktr.ee/Codmn_Artist | 软件开发工程师 | 嵌入式开发工程师 | C/C++、Python、JavaScript | 工业互联网、量化、区块链、AI |
展开
-
【学习笔记】头文件中定义函数出现重复定义报错
static 关键字会改变函数和变量的链接属性,默认情况下全局变量和函数是外部链接,也就是它们可以被其他编译单元使用。但一个添加了 static 的函数或变量只在它定义的编译单元中可见,这样,每个包含类似上面头文件的源文件都独立拥有。工程在编译时,每个编译单元(简单来说就是源文件以及引入的头文件构成了编译单元)都会引入头文件,也就是说。这导致每个编译单元都定义了相同的函数,也就是位于头文件中的。都在各自组成的编译单元中,引入(复制一份)了头文件。,且在各自的函数中调用了定义在头文件中的。原创 2025-04-11 15:13:28 · 332 阅读 · 0 评论 -
【学习笔记】【C++】哪些函数不能是虚函数
虚表的指针在构造函数创建的过程中被设置,简单理解为虚函数的创建被包含在构造函数创建过程中,所以构造函数不能是虚函数,否则逻辑上就矛盾了。静态成员函数属于类,而不是对象,没有 this 指针,不能成为虚函数。友元函数不是类成员函数,没有 this 指针,不能被继承。,内联函数被声明为 virtual 是无效的。模板在编译时实例化,而虚函数在运行时期执行。内联函数在编译时期执行,而。原创 2025-03-16 10:13:34 · 264 阅读 · 0 评论 -
【教程】继承中的访问控制 C++
在 C++ 中派生类可以通过 public,protected 和 private 三种修饰符决定基类成员在派生类中的访问级别。原创 2025-03-15 20:20:20 · 387 阅读 · 0 评论 -
【教程】如何学习 C++
总之,C++ 的学习是一个漫长的,但有技巧的道路,你的目标不是学完所有的 C++ 知识,而是学习 C++ 知识可以满足你当前的需要即可,如果你非常感兴趣,当然也可以深入下去探索。原创 2025-03-15 16:31:05 · 771 阅读 · 0 评论 -
【教程】多级排序 C++
在实际开发场景中,经常会出现多级排序的需要,例如一个商品,它由字段商品种类 ID,生产日期,保质期组成,要求对多个商品进行排序。首先以商品种类 ID升序排序,如果商品种类 ID 相同,则按照生产日期降序排序,如果生产日期也相同,则按照保质期升序排序。面对上面的场景,在 C++ 中我们可以利用std::sort函数来实现。原创 2024-12-07 19:51:34 · 392 阅读 · 0 评论 -
【教程】Leetcode 必知必会常用数据结构与函数(C++ 版)
【代码】【教程】Leetcode 必知必会常用数据结构与函数(C++ 版)原创 2024-11-24 16:31:16 · 434 阅读 · 0 评论 -
【教程】Leetcode 必知必会常用数据结构与函数(C 语言版)
示例// 一维数组// 二维数组// 为第一行(维)申请空间i < 10;i++) {// 为第二行(维)申请空间。原创 2024-08-25 11:12:08 · 1143 阅读 · 1 评论 -
【学习笔记】【最全!!】C++ 中 static 关键字的作用
在 C/C++ 中,关键字static在不同的应用场景下,有不同的作用,这里总结一下,避免在使用时弄混。我按照以下的逻辑来分类static的作用场景static 作用在变量上static 作用在全局变量上:限制全局变量在本文件上static 作用在局部变量上:即使离开变量作用域,也保存变量值,比如用作计数器static 作用在成员变量上 :对象间共享该变量static 作用在函数上static 作用在函数上:函数可见性限制在本文件中(即使函数被声明在头文件,引用该头文件的其他cpp。原创 2023-09-05 20:21:50 · 1913 阅读 · 1 评论 -
【学习笔记】C++ 中的预编译器操作符(#,##,#@)
在#define的指令下,有三种预处理器操作符(其中#@为微软特供),它们的主要作用是是将宏参数字符串化,字符化和 token 连接的作用。原创 2023-06-15 15:09:22 · 1313 阅读 · 0 评论 -
【教程】在 Visual Studio 2015 上对 C++ 进行单元测试
本文的测试环境是 Visual Studio 2015,高级别版本(如,2017,2022)的操作略有不同,但提供了更强大的测试功能,这两种版本 IDE 下的测试方式,可以阅读官方文档。原创 2023-06-01 16:22:29 · 3523 阅读 · 0 评论 -
【学习笔记】读取文件中的字符串与 fgets 的坑
今天写一个读取文件中字符串的函数,理论上应该是很简单的,但是写的时候发现输出的结果总是比文件中的内容少一个字符,并且通过排查,问题就是出在fgets的第二个参数size上,而之所以出现这个问题,是因为网上大部分,包括英文的独立博客中的文章都在fgets的介绍上,对size这个参数的描述不清晰,比较模糊,容易让人理解错误,而他们举的例子往往会掩盖由此导致的问题,下面就来看看。原创 2023-03-15 16:34:45 · 753 阅读 · 0 评论 -
【教程】Windows 下 C++ 项目内存泄漏检查
可以看到不同之处在于,首先它多了几列的数据,其中 Diff 表示 Difference,表示比较的差值,那么比较的内容是什么呢,看最上面一行有一个。点击 可以看到这个对象的函数调用栈信息,这对于我们的调试是非常有用的,我们还可以右键选择跟踪进这个函数调用的位置。的选择框,里面的内容是我们的第一个 Snapshot,所以这里比较的是我们测试的第一个断点时的内存状态。,记录下此时的内存状态,Memory Usage 会显示出内存增长的情况,如下图所示。,记录下此时的内存状态。原创 2023-03-14 15:48:50 · 2134 阅读 · 0 评论 -
【学习笔记】C++ 下字符串与数字的拼接
【注】当 base 为 10 的时候,且当 value 为负数,那么转换后的字符串结果会自动加上一个。不支持格式化浮点类型的数据,但你可以通过其它方式截断小数点后的内容。【注】str 这个参数必须要足够容纳转换后的字符串大小。(-),而其他进制的时候,value 会被视为无符号。【注】要使用 string 和。类型的指针和数组都可以。原创 2023-01-08 15:03:09 · 3439 阅读 · 0 评论 -
【学习笔记】顺序容器的表格方式总结 C++
更新中…原创 2022-12-09 14:22:56 · 790 阅读 · 0 评论 -
【学习笔记】C 语言中未开辟地址的指针作为函数参数传递的问题
先来看下面的一段程序,理论上我们期望的结果是 inner 和 outer 部分都输出 10,但实际运行的时候, 会报错 p 是一个 nullptr 不能输出,但是我们不是在 pointerSon 中对 p 指针开辟了空间吗,开辟了空间后也对它赋值了 10 啊,为什么没有得到期望的结果呢?事实上,导致这个结果的原因是,在 中传递的参数并不是指针传递,而是值传递,值传递是实参的拷贝副本,所以当执行完 后, 里的 p 并没有改变,我们通过图画来阐述这个过程【注】图中 0x123 和 0x456 为演示方原创 2022-10-18 10:50:35 · 562 阅读 · 0 评论 -
【教程】在 visual studio 共享和重用项目属性
在 visual studio 下开发项目时,通常会配置项目的属性,比如引入外部头文件,引入外部库之类的尤其是不同的开发模式,debug和release,不同的开发平台,x64和x86等,配置的项目都是不共用的。这意味着每次切换不同的开发模式和平台,或者每次开启新项目(但项目属性一致)都要重新手动配置这些属性,这显然是不合理的。其实 visual studio 提供了共享和重用项目属性的方式,下面就来看看。原创 2022-09-21 10:48:57 · 2351 阅读 · 0 评论 -
【学习笔记】在 windows 下创建多线程 C++
【注】in 表示输入参数,out 表示输出参数,optional 表示参数可选。时,“所有线程执行完毕” 这句话始终出现在输出语句的结尾,而当。_beginthread 与其属于同一类方式,这里不单独说明。【注】当如果你只用等待一个信号的时候,可以使用。函数来创建线程,同时它具有更高的安全性。小节中实例的代码修改如下部分,以演示。指向数据、代码或不可访问的区域,可以看到,该语句将不会在最后出现。中的实例做了很小的修改即可运行。【注】如果多线程要调用。有四种终止运行线程的方式。原创 2022-09-12 16:48:05 · 2061 阅读 · 0 评论 -
【学习笔记】同一个 solution 的不同 project 使用相同的头文件
有时候在开发中,同一个 solution 下的不同 project 需要共享一个头文件,下面就来实现这个功能在本文中 project 等同于项目的语意。原创 2022-09-07 20:32:41 · 537 阅读 · 0 评论 -
【教程】visual studio debug 技巧总结
更新中 …基础的调试技巧基本更新完毕,visual studio 提供了强大的调试功能,许多东西需要大家动手体验。原创 2022-09-04 21:02:44 · 14887 阅读 · 5 评论 -
【学习笔记】指针常量和常量指针
如下图,作为指针常量,ptr 永远指针指向红色的 0x0000,但里面的值 666 可以被重新赋值为其他的值。常量指针寓意着指针所指的值为常量,不能通过指针来修改所指的值,但可以修改指针指向的地址。,它的语法格式是 const 在 * 右边。这种情况下,该指针指向的地址和值都不能改变。下面我们举一个例子来进行具体的讲解。,但可以修改该地址中的内容。原创 2022-08-23 15:25:28 · 6573 阅读 · 17 评论 -
【学习笔记】memcpy_s 函数与坑
所以实际填写的值应该是 destSize 和 count 都为 10 * 4(即 10 个元素,每个元素占用 4 个字节)。函数赋值到 dest 中,最开始我以为 destSize 和 count 表示的是元素个数,于是填写的都是 10,如下。这里有一个坑,那就是关于 destSize 和 count 的值,它们都是指的字节数(最开始我以为是元素个数)。是在内存级别上直接进行拷贝操作,但注意它一次拷贝的数量为一个字节,而不是一个位(比特)。函数来计算 src 和 dest 占用的元素的字节数,原创 2022-08-17 11:45:05 · 19467 阅读 · 1 评论 -
【学习笔记】virtual 关键字,虚函数与多态
就是一个函数在不同的场景下,表现出不同的状态(行为,特性等)。下面举两个例子,第一个例子比较偏生活。比如你是一家公司的 CEO,你手下有销售部,运营部,技术部三个部门,你对三个部门下达一个指令。原创 2022-05-12 14:32:37 · 3642 阅读 · 0 评论 -
【学习笔记】查看你正在使用的 C++ 标准
在初学 C++ 时,经常听到 C++11,C++14,g++,msvc 等术语,它们之间既有关系,又是指代不同的东西,下面就来简单介绍一些这些术语之间的关系。原创 2022-04-21 19:06:09 · 26727 阅读 · 0 评论