![](https://img-blog.csdnimg.cn/20200213233734388.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 70
分享C++学习心得,总结经验。
书灯
和喜欢的人,在一起,做喜欢的事。
展开
-
C中结构体与C++中类的区别
浅谈一下对C中结构体和C++中类的理解,以及这两者之间的区别。原创 2016-03-26 20:27:15 · 647 阅读 · 0 评论 -
C++内联函数
C++内联函数内联函数是C++为提高程序运行速度所做的一项改进。普通函数被调用时,需要在函数地址和函数起点之间来回跳跃,来回跳跃并记录位置意味着以前使用函数时需要一定的开销;而对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到另一个位置处执行代码,然后在跳回来。因此,内联函数的运行速率比常规函数稍快,但代价是需要占用更多的内存。应有选择的使用内联函数,如果执函数代码的时原创 2016-09-01 21:12:27 · 240 阅读 · 0 评论 -
C++递归
递归C++函数有一个有趣的特点--可以调用自己,这种功能被称为递归。包含一个递归调用的递归如果递归函数调用自己,则被调用的函数也将调用自己,这将无限循环下去,除非代码中包含终止调用链的内容,通常的方法是将递归调用放在if语句中。例如,void类型的递归调用函数recurs()的代码如下: void recurs(argumentlist) { statiments1原创 2016-09-01 21:18:22 · 866 阅读 · 0 评论 -
C++中有关字符串输入的探讨
//只读取一个单词 //示例一:instr1.cpp--reading more than one string#include int main(){ using namespace std; const int ArSize = 20; char name[ArSize] = ""; char dessert[ArSize] = ""; cout << "Enter yo原创 2016-09-01 21:23:54 · 389 阅读 · 0 评论 -
cctype中的字符函数,头文件#include <cctype>
cctype中的字符函数,头文件#include 1.isalnum();--如果参数是字母数字,即字母或数字,该函数返回true.2.isalpha();--如果参数是字母,该函数返回true.3.isblank();--如果参数是空格或水平制表符,该函数返回true.4.iscntrl();--如果参数是控制字符,该函数返回true.5.isdigit();--如果参数是数原创 2016-09-01 21:25:35 · 641 阅读 · 0 评论 -
将两个字符转换为一个字节
/************************************************************将两个字符转换为一个字节,由于基本类型范围的影响,其中包含了一种巧合即当_2asc_to_1b这个函数在转换例子中的"e1"时,能够转换成功,因为e0转换完是2e0,由于超出了unsigned char的范围,2将被丢弃,正好是e0.*****************原创 2016-08-14 00:14:46 · 3821 阅读 · 1 评论 -
链表的一些简单操作
本文详细介绍了链表的一些简单的操作,包括链表的创建、遍历、查询、插入、删除、排序、逆序、释放。另附运行结果。#include #include typedef struct student{ int num; int score; char name[20]; struct student *next;}STU;void link_create(STU **head原创 2016-09-05 23:40:44 · 372 阅读 · 0 评论 -
命名空间的一些特性
命名空间在一个给定作用域中定义的每个名字在该作用域中必须是唯一的,对庞大、复杂的应用程序而言,这个要求可能难以满足。这样的应用程序的全局作用域中一般有许多名字定义。由独立开发的库构成的复杂程序更有可能遇到名字冲突--同样的名字既可能在我们自己的代码中使用,也可能在独立供应商提供的代码中使用。库倾向于定义许多全局名字--主要是模板名、类型名、或函数名。在使用来自多个供应商的库编写应用程序的时原创 2016-09-22 21:56:37 · 1164 阅读 · 0 评论 -
关联容器
关联容器类型 map 关联数组;元素通过键来存储和读取 set 大小可变的集合,支持通过键实现的快速读取 multimap 支持同一个键多次出现的map类型 multiset 支持同一个键多次出现的set类型 关联容器和顺序容器的本质区别在于:关联容器通过键(Key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 一般来说,如果希望有效存储不同值的集合,那么原创 2016-11-17 18:52:13 · 249 阅读 · 0 评论 -
泛型算法
泛型算法,这些算法大都不依赖特定的容器类型,是“泛型”的,可作用在不同类型的容器和不同类型的元素上。使用泛型算法必须包含头文件。一、读容器元素的算法1.find运算 假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值。解决这个问题最简单的方法是使用标准库提供的find运算。 int search_value = 42; vector::const_iter原创 2016-11-17 18:55:25 · 259 阅读 · 0 评论 -
迭代器
迭代器初级篇: 除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并遍历元素的数据类型。 标准库为每一种标准容器定义了一种迭代器类型,迭代器类型提供了比下标操作更通用化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用。 1.容器的iterator类原创 2016-11-17 18:58:22 · 327 阅读 · 0 评论 -
c++11新特性的简单介绍
c++11新特性的简单介绍原创 2017-09-08 16:24:15 · 228 阅读 · 0 评论 -
c++高效、快速的日志类Spdlog
c++高效、快速的日志类Spdlog原创 2017-09-08 16:29:17 · 1927 阅读 · 0 评论 -
c++设计模式
工作两年了,在c++编程中,只使用过单例模式,深知设计模式的重要性,最近开始研究c++的设计模式。一直关注博客专家一去、二三里,从他那学到了很多;他写的很好,还有例子,直接转载一下(希望有机会可以认识下)。设计模式->一去、二三里转载 2018-01-11 14:37:35 · 223 阅读 · 0 评论 -
嵌入式必须了解的一些知识
1.串口 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源请求(打开串口),通信完成后必须释放资源(关闭串口). UART能发出中断或DMA请求在CPU和UART之间传送数据,每个UAR原创 2016-09-01 21:08:24 · 512 阅读 · 0 评论 -
HEX/BCD/BYTE/之间的转换
/*********************************HEX/BCD/BYTE/之间的转换**********************************//*将srcBuff指向的len个字节的数据,按十六进制字符编码转换,并存于tarBuff中*/void ByteToHexStr(char *tarBuff, const unsigned char *srcBu原创 2016-08-09 23:30:36 · 4199 阅读 · 0 评论 -
C++之函数模板
函数模板也就是使用通用类型来定义函数,其中的通用类型可用具体的内置类型(比如int或double)来替换。通过将类型作为参数传递给模板,就可以使编译器生成该类型的函数。由于模板允许以通用类型的方式编写程序,因此有时候也被称为通用编程。 函数模板允许以任意类型的方式来定义函数。例如,可以这样建立一个交换模板:template void Swap(Any &a, Any &b){原创 2016-06-27 22:34:16 · 352 阅读 · 0 评论 -
C++之操作符重载和友元学习笔记
用户定义的多个名称相同但特征标(参数列表)不同的函数,这被称为函数重载或函数多态。目的是让您能够用相同的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。 要重载操作符,需要使用被称为操作符函数的特殊函数形式,操作符函数的格式如下:operator op (argument list) 操作符重载的限制:1、重载后的操作符必须至少有一个操作数是用户定义原创 2016-06-28 23:43:37 · 760 阅读 · 0 评论 -
C++之类的自动转换和强制类型转换
1.自动转换C++语言不自动转换不兼容的类型,例如,下面的语句: int *p = 10; 是非法的,因为左边是指针类型,而右边是数字。不过在无法自动转换时,可以使用强制类型转换: int *p = (int *)10; 上述语句将10强制转换为int指针类型,将指针设置为地址10.C++程序员可以指示C++如何自动进行转换,或通过强制类型转换来完成。在C++中,接受一个参数的构造原创 2016-06-30 21:23:52 · 1015 阅读 · 0 评论 -
C++之友元
一、友元类 类并非只能拥有友元函数,也可以将类作为友元;但什么时候会希望一个类称为另一个类的友元呢,我们来看一个例子,如果要编写一个模拟电视机和遥控器的简单程序,决定定义一个Tv类和Remote类,来分别表示电视机和遥控器。很明显,遥控器可以改变电视机的状态,这表明应将Romote类作为Tv类的一个友元。首先来定义一组状态成员来表示电视机,下面是一些可能的状态:1.开/关原创 2016-07-12 22:29:35 · 228 阅读 · 0 评论 -
派生类和基类的关系—类继承
C++之类继承 一、意义:面向对象编程的主要目的之一是提供可重用的代码,开发新工程,尤其是当工程十分庞大时,重用经过测试的代码比重新编写代码要好的多,使用已有的代码可以节省时间,由于已有的代码已被测试和使用过,因此有助于避免在程序中引入错误。另外,必须考虑的细节越少,便越能专注于程序的整体策略。 通常,类库是以源代码的方式提供的,这意味着可以对其进行修改,以满足需求,但是,原创 2016-07-01 19:33:10 · 1730 阅读 · 0 评论 -
字节排序函数
考虑一个16位的整数,它由2个字节组成。内存中存储这两个字节有两种方法:一种是将低字节存储在起始地址,这称为小端字节序;另一种方法是将高序字节存储在起始地址,这称为大端字节序。下面的程序可以检测是大端存储还是小端存储:#include int main(int argc, char *argv[]){ union { unsigned short num; uns原创 2016-07-26 20:35:16 · 218 阅读 · 0 评论 -
继承--is-a关系
C++有3种继承方式:公有继承、保护继承、私有继承。公有继承是最常用的方式,它建立一种is-a关系,即派生类对象也是一个基类对象,可以对基类对象执行的任何操作,也可以对派生类对象执行。 如果希望同一个方法在派生类和基类中的行为是不同的,也就是说,方法的行为应取决于调用该方法的对象。这种较复杂的行为成为多态--具有多种形态,就是指同一个方法的想行为随上下文而异。有两种机制可用于实现多态公有原创 2016-07-05 21:10:33 · 916 阅读 · 0 评论 -
C--有关内存的思考
C--有关内存的思考#include #include #include //结果段错误,因为str指向空,传递的是指针变量,要传变量地址才可以void getmemory0(char *p){ p = (char *)malloc(100);}void test(void){ char *str = NULL; getmemory0(str)原创 2016-07-05 21:29:54 · 278 阅读 · 0 评论 -
C语言实现判断闰年、从常规时间到卫星系统时间的转换
一个比较简单的算法来实现判断闰年和卫星时间的转换:头文件:#ifndef CASIC_AGNSS_AIDINI_H#define CASIC_AGNSS_AIDINI_H// 时间结构体(注意:这里是UTC时间!!!与北京时间有8个小时的差距,不要直接使用北京时间!!!)// 比如北京时间2016.5.8,10:34:23,那么UTC时间应该是2016.5.8,02:34:23/原创 2016-07-20 22:53:00 · 817 阅读 · 0 评论 -
输入月份和年份返回是一年的第几天
/*************************************************************************************输入月份和年份返回day of year,就是一年的第几天。将前几个月加起来,如果闰年,且大于2月份就再加1,在加上当月的天数,就是day of year. *******************************原创 2016-08-05 00:03:08 · 606 阅读 · 0 评论 -
BCD编码的数据与基本类型数据之间的转换
/***********************************************************************BCD编码的数据与基本类型数据之间的转换:BCD码亦称二进码十进数或二-十进制码,用4位二进数来表示1位十进数中的0~9这10个数码,8421BCD码是最常用的BCD码,只选用4位二进制码中的前10组代码,即用0000~1001,来分别表示它所对应原创 2016-08-16 21:02:59 · 11620 阅读 · 1 评论 -
类的构造函数、析构函数、与赋值函数
类的构造函数、析构函数、与赋值函数1.每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包括一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A产生四个缺省的函数,如: A(void); //缺省的无参数构造函数 A(const A &a); //缺省的拷贝构造函数 ~A(void); //缺省的析构原创 2016-09-09 22:20:16 · 866 阅读 · 0 评论 -
C++特性
1.函数重载的概念在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载。这样便于记忆,提高了函数的易用性,这是C++语言采用重载机制的一个理由。C++语言采用重载机制的另一个理由是:类的构造函数需要重载机制。因为C++规定构造函数与类同名,构造函数只能有一个名字。如果想用几种不同的方法创建对象的话,别无选择,只能用重载机制来实现。2.当心隐式类型转换导致重载函数产生二原创 2016-09-09 22:25:05 · 239 阅读 · 0 评论 -
c语言内存管理
BSS区(bss)未初始化全局变量、静态变量数据区(data)已初始化全局变量、静态变量、常量数据代码区(text)可执行代码 存储时的三个区域(linux中用size查看)栈区(向下增长)堆区(向上增长)BSS区(未初始化全局变量、静态变原创 2018-02-01 10:19:34 · 233 阅读 · 0 评论