C/C++
文章平均质量分 76
记录C/C++相关知识
Innolink42
一名FPGA数字逻辑设计和嵌入式系统开发的爱好者。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一位C++低延迟交易系统开发工程师的有趣开发经历
作为一名专注于C++低延迟交易系统的开发工程师,我有超过8年的从业经验,主要服务于全球顶级量化对冲基金和交易所(如Jane Street、Citadel和纳斯达克)。:2019年,在一个HFT(高频交易)项目中,我们的订单簿引擎在美股开盘前10分钟突发崩溃——由于市场深度剧增(从10档到100档),重建时间从50μs飙升到2ms,导致数百万美元滑点损失。:开盘铃响前,我在服务器机房边敲代码边喝咖啡,实时监控延迟曲线。:这个队列成了团队“秘密武器”,被用于比特币期货系统,年节省数百万美元基础设施成本。原创 2025-10-23 23:13:21 · 850 阅读 · 0 评论 -
如何在Windows操作系统上使用Makefile?
在Windows上使用Makefile需要安装GNU Make(通过MinGW或MSYS2)和适当的编译器(如gcc通过调整文件路径、命令和可执行文件后缀,Makefile可以很好地适配Windows环境。MSYS2是推荐的解决方案,因为它提供类Linux的终端和工具链,减少兼容性问题。对于复杂项目,可以结合CMake等工具生成Makefile,进一步简化构建过程。原创 2025-10-01 20:14:22 · 1664 阅读 · 0 评论 -
Makefile及其在Linux操作系统上的使用
Makefile是一个用于自动化编译和构建项目的脚本文件,通常与make工具一起使用。它描述了源代码文件、目标文件、可执行文件之间的依赖关系以及构建它们的命令。Makefile的主要目标是简化复杂项目的编译过程,特别是在Linux环境下,广泛用于C、C++、Go等语言的程序构建。Makefile是Linux环境下强大的构建工具,通过定义规则、变量和伪目标,可以高效管理项目的编译和构建过程。它的核心优势在于增量编译和依赖管理,适合从小项目到复杂的大型系统。原创 2025-10-01 20:11:33 · 764 阅读 · 0 评论 -
单片机STM32F103:DMA的原理以及应用
STM32F103的DMA控制器通过高效的数据传输,显著降低CPU负载,适合高吞吐量场景。DMA1支持7通道,DMA2(部分型号)支持5通道,覆盖ADC、UART、SPI等外设。使用STM32CubeMX配置DMA参数,结合HAL库(如。原创 2025-07-09 20:30:29 · 2076 阅读 · 0 评论 -
单片机STM32F103如何实现CAN总线?
通过STM32CubeMX配置STM32F103的CAN外设,结合TJA1050收发器和HAL库,可以快速实现CAN总线通信。发送节点配置消息ID和数据,接收节点通过过滤器和中断处理消息。硬件连接需注意终端电阻和共地,软件配置需确保波特率和ID匹配。建议从简单的数据收发开始,逐步扩展到多节点、多ID通信或实时系统开发。原创 2025-07-07 22:29:17 · 2152 阅读 · 0 评论 -
C语言:打印C语言中各种数据类型在内存占用的字节数
【代码】C语言:打印C语言中各种数据类型在内存占用的字节数。原创 2025-05-22 22:04:14 · 285 阅读 · 0 评论 -
C++语言的跨平台挑战和应对策略
C++在跨平台开发中的主要挑战源于操作系统、编译器、硬件架构和第三方库的差异。使用跨平台库和标准C++特性(如)抽象平台差异。借助CMake等工具统一构建流程。封装平台特定代码,减少条件编译的使用。选择成熟的跨平台第三方库,并通过vcpkg/Conan管理依赖。实现自动化测试和日志系统,提高调试效率。统一字符编码(如UTF-8)并支持国际化。通过合理的设计和工具支持,C++可以实现高效、可靠的跨平台开发,充分发挥其高性能和灵活性的优势。原创 2025-05-21 17:33:36 · 1182 阅读 · 0 评论 -
C语言:树
树是一种重要的数据结构,支持递归操作,常用于表示层次化数据。在 C 语言中实现树通常需要动态分配内存,使用递归操作处理节点。避免内存泄漏是树实现中的关键点,需要显式释放节点内存。原创 2024-11-25 21:19:18 · 2145 阅读 · 0 评论 -
C语言:堆和栈
大小固定且较小,通常在编译时就确定(可以由程序员设置或系统默认),例如,在Linux下,栈的默认大小可能在几兆字节(MB)左右。栈的分配和释放速度非常快。:局部变量的生命周期与其所在的作用域(通常是函数或代码块)相关,当作用域结束时,栈上的内存被自动回收。:因为内存分配是动态的,并且可能需要在内存中搜索合适的空闲块,访问速度相对较慢。:访问速度快,因为栈是线性结构,数据按顺序存放,访问是通过简单的指针移动实现的。:容易产生内存碎片,因为内存块的分配和释放是非连续的,可能会导致内存碎片化问题。原创 2024-11-24 21:21:10 · 428 阅读 · 0 评论 -
C语言:指针
在 C 语言中,指针是一种变量,它存储的是另一个变量的内存地址。可以把内存想象成一个巨大的公寓楼,每个变量就像住在公寓里的居民,而指针就是写着居民房间号(内存地址)的纸条。例如,假设有一个整型变量a,它存储在内存中的某个位置,指针变量p就可以用来保存变量a的内存地址,这样p就 “指向” 了a。通过使用指针,可以直接访问和操作内存中的数据,这使得C语言具有高度的灵活性和效率。原创 2024-11-15 14:01:51 · 900 阅读 · 0 评论 -
C语言:共用体
定义共用体...声明和使用共用体变量// 声明共用体变量示例:定义一个通用数据容器int i;float f;// 使用整数成员printf("整数: %d\n", data.i);// 使用浮点数成员printf("浮点数: %.2f\n", data.f);// 使用字符串成员// 注意:会覆盖之前的值printf("字符串: %s\n", data.str);// 再次访问其他成员会导致未定义行为。原创 2024-11-23 22:04:11 · 1222 阅读 · 0 评论 -
C语言:字符串
字符数组方式定义字符串时,可以使用字符数组。必须确保数组的最后一个元素是\0,否则字符串未正确结束。// 自动加上 \0指针方式使用字符指针指向一个以\0结束的字符序列。注意:使用这种方式定义的字符串是只读的,修改会引发未定义行为。C语言字符串本质是字符数组,需特别注意内存管理。操作字符串时尽量使用库函数,如strcpy、strlen等,避免手动管理带来的错误。字符串处理是C语言中重要的技能,广泛应用于文件处理、数据解析、网络通信等领域。原创 2024-11-23 21:02:28 · 1009 阅读 · 0 评论 -
C语言:函数
返回类型 函数名(参数列表) {函数体(变量定义、语句等);return 返回值;返回类型:可以是基本数据类型(如int、float、char等),也可以是指针类型、结构体类型或void(表示无返回值)。例如,int表示函数返回一个整数,void表示函数不返回任何有意义的值。函数名:是一个标识符,用于在程序中唯一标识这个函数,命名规则遵循 C 语言标识符的命名规则(以字母或下划线开头,后面可以跟字母、数字或下划线)。参数列表:包含零个或多个参数,参数之间用逗号分隔。原创 2024-11-22 21:09:23 · 1017 阅读 · 0 评论 -
C语言:结构体
结构体是 C 语言中一种用户自定义的数据类型,它允许将不同类型的数据组合在一起。这里定义了一个名为Student的结构体,它包含三个成员:name是一个字符数组,用于存储学生的姓名;age是一个整数,用于存储学生的年龄;score是一个浮点数,用于存储学生的成绩。原创 2024-11-21 21:17:53 · 939 阅读 · 0 评论 -
C语言:数组
在 C 语言中,数组是一种数据结构,它可以存储多个相同类型的数据元素。例如,要存储 10 个整数,可以定义一个整数数组。例如,定义了一个名为scores的整数数组,它可以存储 10 个整数。这里的int是数据类型,表示数组中的元素都是整数,scores是数组名,用于在程序中引用这个数组,10是数组大小,指定了数组可以容纳的元素个数。原创 2024-11-20 14:27:52 · 971 阅读 · 0 评论 -
C++软件开发:职业生涯中令人难忘的bug
某人作为一名C++软件工程师,确实遇到过一些令人难忘的bug。下面,某人将分享一个基于真实世界的故事,以及某人是如何分析和解决这个问题的。原创 2024-11-20 13:40:44 · 344 阅读 · 0 评论 -
如何在Ubuntu上安装gcc和g++?
若看到如下图所示的信息,证明gcc和g++已经成功在Ubuntu上安装。当前gcc版本为11.4.0。输入Y,再回车,等待命令执行完毕,gcc和g++就安装完成了。然后回车,输入sudo的密码,再回车。原创 2024-11-18 20:18:23 · 1088 阅读 · 0 评论 -
C语言:链表
链表是一种常见的线性数据结构,其中每个元素(称为节点)包含两部分:数据和指向下一个节点的指针。链表的主要优点是插入和删除操作的时间复杂度较低,但随机访问的效率不如数组。原创 2024-11-18 10:31:05 · 1039 阅读 · 0 评论 -
C++:类的继承
在C++中,类的继承是一种面向对象编程(OOP)的重要特性,它允许一个类(子类或派生类)继承另一个类(基类或父类)的属性和方法。通过继承,可以重用现有的代码,减少重复代码,提高代码的可维护性和扩展性。原创 2024-11-18 09:34:56 · 1236 阅读 · 0 评论 -
C++:类和对象
类是用来定义一个新的数据类型,它封装了数据和操作这些数据的函数(方法)。类可以看作是创建对象的模板或蓝图。原创 2024-11-17 14:45:00 · 386 阅读 · 0 评论 -
用C++做游戏开发有什么优势?
C++在游戏开发领域具有显著的优势,这些优势使其成为许多大型游戏和3A项目的首选编程语言。原创 2024-11-14 10:00:08 · 910 阅读 · 0 评论 -
新手在学习C语言时常犯哪些错误?
学习C语言时,新手经常会犯一些常见的错误。原创 2024-11-12 11:20:09 · 941 阅读 · 0 评论 -
如何用C++代码实现一颗闪烁的爱心?
Windows 使用 system(“CLS”),Unix 使用 system(“clear”) 来清空屏幕。要用 C++ 实现爱心闪烁效果,我们可以使用控制台输出文本,并通过在控制台中刷新屏幕来模拟闪烁的效果。由于 C++ 本身没有类似 turtle 这样的图形库,操作控制台输出的方式比较简单,主要通过字符绘制和时间延迟来实现。main():控制爱心的闪烁效果,使用 sleep_for() 函数来控制每次闪烁的延迟时间。这个程序在控制台窗口中打印了一个字符图案的爱心,并通过清屏和重新绘制来模拟闪烁效果。原创 2024-11-10 12:56:02 · 1447 阅读 · 0 评论 -
对比C/C++语言,Rust语言有什么优势?
通过编写更高效的代码,减少计算资源的需求,Rust程序可以帮助降低能源消耗和碳足迹,特别是对于大规模应用和服务。此外,Rust对安全性和正确性的重点关注与道德编程原则相吻合,通过在语言层面防止整个类别的错误和安全漏洞,帮助开发者创建更可靠和安全的软件。Rust的编译模型,包括LLVM作为后端,允许进行积极的优化,产生的机器代码可以与手工调整的C或C++代码相媲美。:Rust通过其所有权系统和借用规则在编译时捕获许多常见的内存安全错误,如空指针引用和数据竞争,避免了许多常见的安全漏洞。原创 2024-11-02 20:34:13 · 1293 阅读 · 0 评论 -
C++语言有哪些常用语句?
在 C++ 中,首先要定义变量才能使用。例如int a;定义了一个整型变量a。这是很基础的语句,它告诉编译器为变量a分配内存空间,用于存储整数值。如果要定义多个相同类型的变量,可以写成除了基本数据类型(如int、float、double、char等),还可以定义自定义类型的变量。例如,假设有一个结构体struct Student,可以用Student stu;来定义一个Student类型的变量stu。原创 2024-11-01 21:17:48 · 791 阅读 · 0 评论 -
C语言如何进行数据类型转换?
C语言中如何进行数据类型转换原创 2024-10-31 16:28:07 · 903 阅读 · 0 评论 -
C++语言如何进行数据类型转换?
在进行类型转换时,应该优先考虑使用C++风格的类型转换运算符,因为它们更安全、更明确,并且可以提供编译时的类型检查。例如,将float类型的值赋给int类型的变量时,小数部分会被截断。使用(type)value的形式进行类型转换,这种转换方式不安全,因为它不会进行类型检查,容易导致类型转换错误。:用于低级别的重新解释转换,可以将任何指针转换为任何其他指针类型,甚至可以将指针转换为足够大的整数类型。:用于非多态类型的安全转换,如基本数据类型之间的转换,或者向上转型(从派生类指针转换为基类指针)。原创 2024-10-31 10:38:48 · 898 阅读 · 0 评论 -
如何在Windows操作系统上搭建C语言开发环境?
选择哪个工具取决于你的个人喜好和项目需求。对于初学者来说,Visual Studio和Code::Blocks是很好的起点,因为它们提供了丰富的功能和用户友好的界面。对于更高级的用户,Eclipse CDT和CLion提供了更多的定制选项和高级功能。在Windows操作系统上搭建C语言开发环境,你可以选择多种工具和集成开发环境(IDE)。原创 2024-10-27 13:02:16 · 780 阅读 · 0 评论
分享