九层指针
码龄5年
关注
提问 私信
  • 博客:194,296
    问答:14
    194,310
    总访问量
  • 195
    原创
  • 90,073
    排名
  • 880
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:单片机与嵌入式。 如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 毕业院校: 大连理工大学
  • 加入CSDN时间: 2019-12-25
博客简介:

wanghao312的博客

博客描述:
嵌入式开发
查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    922
    当月
    14
个人成就
  • 获得1,056次点赞
  • 内容获得15次评论
  • 获得1,208次收藏
  • 代码片获得1,663次分享
创作历程
  • 135篇
    2024年
  • 62篇
    2023年
成就勋章
TA的专栏
  • C++语言
    79篇
  • C语言
    53篇
  • 数据结构(C语言版)
    24篇
  • 自动控制理论
    1篇
  • Python
    4篇
  • Free RTOS 实时操作系统
    3篇
  • 单片机基础知识
    26篇
兴趣领域 设置
  • 编程语言
    c++开发语言
  • 数据结构与算法
    数据结构
  • 嵌入式
    单片机stm32mcu物联网
创作活动更多

仓颉编程语言体验有奖征文

仓颉编程语言官网已上线,提供版本下载、在线运行、文档体验等功能。为鼓励更多开发者探索仓颉编程语言,现诚邀各位开发者通过官网在线体验/下载使用,参与仓颉体验有奖征文活动。

368人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

单链表实现增删改查遍历打印功能

下面是一个简单的单向链表实现,包括了增加、删除、修改和查找节点的基本操作函数。请注意,这里只是一个基础实现,并没有进行复杂的错误检查和异常处理。函数中,我们创建了一个链表实例,对其进行了几个基本操作,并打印了操作后的链表状态。,它包含了增加节点到尾部、删除节点、更新节点数据和查找节点数据的功能。这个程序定义了一个链表类。
原创
发布博客 2024.06.09 ·
220 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

虚拟存储系统

在计算机科学中,虚拟存储系统是一种革命性的技术,它允许计算机运行大于物理内存容量的程序。这种技术在现代计算机系统中扮演着至关重要的角色,为程序员提供了一个连续的、大容量的内存空间,同时优化了内存的使用和管理。本文将详细介绍虚拟存储系统的原理、优点和实现方式。
原创
发布博客 2024.06.05 ·
452 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

现代计算机系统的存储层次

现代计算机系统的存储层次通常包括两个主要的层次和三个主要的存储系统。这些层次和系统共同构成了计算机的存储架构,旨在提供不同速度、容量和成本的存储选项,以满足各种计算需求。
原创
发布博客 2024.06.05 ·
640 阅读 ·
10 点赞 ·
0 评论 ·
3 收藏

工程学中的哲学

因此,高级设计者不仅仅是在满足特定的需求,而是在创造一种能够自我扩展、适应变化的系统架构,这种架构能够通过最小的基本元素,通过组合和变化来应对未来的挑战。道德经中的这句话“道生一,一生二,二生三,三生万物”可以被视为一种哲学上的比喻,用来描述软件系统设计中的一种理想状态,即通过少量的基本元素或组件,通过组合和复用来构建出复杂多变的系统功能。在软件工程中,这种思想体现为组件化和模块化的设计原则,它鼓励设计者创造出可重用、可组合的组件,这些组件可以像乐高积木一样组合起来,形成满足各种需求的应用程序。
原创
发布博客 2024.06.01 ·
551 阅读 ·
21 点赞 ·
0 评论 ·
3 收藏

自动控制理论发展史

一:20世纪40年代末-50年代的经典控制理论时期,着重解决单输入单输出系统的控制问题,主要数学工具是微分方程、拉氏变换、传递函数;主要方法是时域法、频域法、根轨迹法;主要问题是系统的稳、准、快。二:20世纪60年代的现代控制理论时期,着重解决多输入多输出系统的控制问题,主要数学工具是以此为峰方程组、矩阵论、状态空间法主要方法是变分法、极大值原理、动态规划理论;重点是最优控制、随即控制、自适应控制;核心控制装置是电子计算机。
原创
发布博客 2024.05.30 ·
2342 阅读 ·
18 点赞 ·
0 评论 ·
39 收藏

为什么普通程序员也要了解一下架构知识?

相反,如果每个程序员都具备一定的软件架构知识,他们可以更好地理解其他成员的工作,更好地进行模块划分和代码整合,从而提高整个团队的工作效率。因此,学习软件架构的知识可以帮助程序员更好地理解整个系统的工作原理,以及如何编写更加高效、可维护的代码。而具备软件架构知识的程序员则可以更好地理解系统的结构和设计,更容易找到应对需求变化的最佳方案,从而减少代码的修改量和维护成本。传统的程序员通常只需要关注代码的编写和功能的实现,而现代的程序员则需要具备更广泛的技能和知识,其中包括软件架构的知识。
原创
发布博客 2024.05.30 ·
486 阅读 ·
15 点赞 ·
0 评论 ·
3 收藏

C++中随机访问迭代器和双向迭代器的区别是什么?

在C++中,迭代器是一种检查容器内元素并遍历元素的数据类型。
原创
发布博客 2024.05.29 ·
501 阅读 ·
6 点赞 ·
0 评论 ·
12 收藏

C++中STL提供的库函数解析(从宏观框架入手)

总的来说,几乎所有的 STL 容器都支持迭代器,但有些容器适配器本身不提供迭代器,而是依赖于底层容器。是一种基于红黑树实现的集合容器,它提供了对唯一元素的快速查找、插入和删除操作。的实现在细节上可能会有所不同,以提供最高效的性能和符合标准的特性。的实现在细节上可能会有所不同,以提供最高效的性能和符合标准的特性。的实现在细节上可能会有所不同,以提供最高效的性能和符合标准的特性。的实现在细节上可能会有所不同,以提供最高效的性能和符合标准的特性。的实现在细节上可能会有所不同,以提供最高效的性能和符合标准的特性。
原创
发布博客 2024.05.29 ·
951 阅读 ·
17 点赞 ·
0 评论 ·
24 收藏

vector容器的操作方式大全

是 C++ STL 中的一种序列容器,用于存储一系列元素,其中元素的存储是连续的。成为一种非常灵活和强大的数据结构,适用于各种需要动态数组操作的场合。
原创
发布博客 2024.05.29 ·
543 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

我认为字符串属于容器的一种实例化,STL中对于容器可以使用的操作、算法,对于字符串也可以使用,且操作方法类似

类确实可以看作是一种特殊的容器,它专门用于存储和处理字符序列,因此它支持许多与 STL 容器相似的操作和算法。类提供了许多与 STL 容器相似的操作和算法,因此您可以在字符串上使用许多与 STL 容器相同的算法和函数。可以像其他 STL 容器一样使用 STL 算法。算法来对字符串中的字符进行升序排序。类是一个模板容器类的实例化,它继承自。在这个例子中,我们使用了。
原创
发布博客 2024.05.28 ·
242 阅读 ·
4 点赞 ·
0 评论 ·
1 收藏

深拷贝和浅拷贝

浅拷贝速度快,但可能导致数据共享问题,特别是当对象包含指针成员时。深拷贝会创建数据的完整副本,因此对象之间不会共享数据,但需要更多的内存和时间。在实际应用中,应根据具体需求选择合适的拷贝方式。如果对象中包含指针成员,并且每个对象需要独立的数据副本,则应实现深拷贝。如果对象中没有指针成员,或者不需要独立的数据副本,浅拷贝通常是足够的。在设计类时,如果需要自定义拷贝行为,应该显式定义拷贝构造函数和拷贝赋值运算符,以防止默认的浅拷贝造成的问题。为了展示如何重载复制运算符以实现深拷贝,我们将修改您提供的。
原创
发布博客 2024.05.26 ·
395 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏

模板具体化的语法

模板具体化的语法取决于你想要具体化的是函数模板还是类模板。
原创
发布博客 2024.05.24 ·
350 阅读 ·
10 点赞 ·
0 评论 ·
5 收藏

普通函数和函数模板调用规则

和一个同名函数模板。我们通过不同的调用展示了每一条规则的效果。注意,在实际编程中,为了避免混淆和潜在的调用问题,通常建议不要让普通函数和模板函数的名称和参数列表完全相同,除非有特定的理由。在C++中,函数模板和普通函数可以共存,但它们的调用规则有一定的优先级。以下是针对上述四条调用规则的解释和代码示例。在这个示例中,我们定义了一个普通函数。
原创
发布博客 2024.05.24 ·
329 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

泛型编程和STL(标准模板库)

泛型编程是一种编程范式,它允许编写独立于数据类型的代码。模板是一种特殊的机制,它允许编写一个单一的函数或类,可以用于任何数据类型。这样,我们就可以编写一次代码,应用到多种数据类型上,大大提高了代码的重用性和灵活性。泛型编程和STL(标准模板库)是C++语言中非常重要的核心概念,它们极大地提高了代码的重用性和灵活性。本文将介绍泛型编程的概念,以及STL的基本特性和组成部分。泛型编程的核心理念是编写尽可能通用的代码,使其适用于不同的数据类型。这种编程方式可以让我们更关注于算法的实现,而不是数据类型的具体细节。
原创
发布博客 2024.05.24 ·
337 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏

使用基类的指针或引用来访问派生类的成员是一种常见的做法,尤其是在实现多态性时

在面向对象编程中,使用基类的指针或引用来访问派生类的成员是一种常见的做法,尤其是在实现多态性时。多态性允许不同类型的对象通过共同的接口(通常是基类的接口)进行交互,这样可以编写更通用、更灵活的代码。这种方法在你知道对象的具体类型时是完全有效的。然而,如果你想要编写可以处理多种形状类型的代码,使用基类指针或引用会更加灵活。这就是多态性的强大之处,它允许你编写更通用的代码来处理不同的对象类型。为什么在有关纯虚函数与抽象类,以及实现动态多态时,函数都能正确地调用相应的。
原创
发布博客 2024.05.22 ·
350 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

纯虚函数与抽象类

在C++中,纯虚函数(pure virtual function)是一个在基类中被声明为纯虚的虚函数,它在基类中没有具体的实现,必须在派生类中提供实现。抽象类(abstract class)是一个至少包含一个纯虚函数的类,因此无法直接实例化。抽象类通常用作其他派生类的基类,用于定义接口和共享行为。
原创
发布博客 2024.05.22 ·
361 阅读 ·
9 点赞 ·
0 评论 ·
1 收藏

`override` 和 `overload`

override用于派生类中,用于指示一个函数重写基类中的虚函数。它要求函数签名必须完全相同。overload发生在同一个作用域内,用于提供多个同名函数,但参数列表不同。重载函数的返回类型可以不同,但通常保持一致。override是C++11引入的关键字,用于增强代码的可读性和可维护性。overload不是关键字,而是描述了一种编程范式,它允许在同一个作用域内定义多个同名函数,以便对不同的输入参数执行不同的操作。
原创
发布博客 2024.05.22 ·
393 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

`override`关键字-重写(override)基类中的同名虚函数

派生类中的函数也会自动覆盖基类中的同名虚函数(前提是函数签名相同)。然而,如果函数签名不小心写错了,那么原本意图重写的函数可能会变成一个全新的函数,而不是重写基类中的函数,这可能会导致难以发现的bug。关键字可以提高代码的可读性和可维护性,因为它清楚地表明了函数的意图,并且如果基类中没有相应的可以重写的函数,编译器将会报错。关键字不是强制性的,但使用它是一个很好的编程实践,因为它可以增加代码的清晰度和安全性。函数没有匹配的基类函数可以重写,编译器将会报错,从而避免了潜在的bug。
原创
发布博客 2024.05.22 ·
493 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

菱形继承问题-用虚继承解决

需要注意的是,虚继承可能会增加额外的内存和性能开销,因为访问虚基类成员时需要通过指针间接访问。菱形继承问题(也称为钻石问题)是指在一个类继承体系中,当两个类B和C都继承自同一个类A,然后另一个类D同时继承自B和C时,类D将拥有两个类A的实例,这可能导致成员变量和方法的歧义。虚继承允许派生类共享一个基类实例,从而避免了菱形继承中的歧义问题。在这个例子中,类B和类C都使用了虚继承来继承类A。因此,当类D继承自B和C时,它只包含一个类A的实例,这样就解决了菱形继承问题。
原创
发布博客 2024.05.22 ·
439 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

菱形继承问题-用虚继承解决

需要注意的是,虚继承可能会增加额外的内存和性能开销,因为访问虚基类成员时需要通过指针间接访问。菱形继承问题(也称为钻石问题)是指在一个类继承体系中,当两个类B和C都继承自同一个类A,然后另一个类D同时继承自B和C时,类D将拥有两个类A的实例,这可能导致成员变量和方法的歧义。虚继承允许派生类共享一个基类实例,从而避免了菱形继承中的歧义问题。在这个例子中,类B和类C都使用了虚继承来继承类A。因此,当类D继承自B和C时,它只包含一个类A的实例,这样就解决了菱形继承问题。
原创
发布博客 2024.05.21 ·
201 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏
加载更多