C++
C++
我现在强的可怕~
把时间分给睡眠
分给书籍
分给运动
分给花鸟树木和山川湖海
分给你对这个世界的热爱
当你开始做时间的主人
你会感受到平淡生活中
喷涌而出的平静的力量
要永远年轻,永远热爱
展开
-
C语言中函数名后面加类名的作用
C原创 2022-10-10 16:37:31 · 439 阅读 · 0 评论 -
C++ vector的用法
转载自:https://www.cnblogs.com/Nonono-nw/p/3462183.htmlvector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:#include;一、vector 的初始化:可以有五种方式,举例说明如下:(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的转载 2022-03-01 13:59:58 · 140 阅读 · 0 评论 -
C++运行时给输入参数
两种方法方法1:右键单击项目名称,点击属性,在命令参数行输入对应的参数,方法2:找到项目所在的路径,有一个对应项目名称的.exe, 在cmd中运行即可原创 2022-02-25 13:58:58 · 1062 阅读 · 0 评论 -
void* 指针
代码中有看到(void )stDst.pucBuf指针, void 指针是干嘛用的呢,查阅如下,void的字面意思是“无类型”,void *则为“无类型指针”,*void 可以指向任何类型的数据。(关键)任何类型的指针都可以直接赋值给void*,无需进行强制类型转换void *p1;int *p2;p1 = p2;void *arg;int i;i=(int *)arg;假如定义void类型:void a;这行语句编译时会出错,即使void a的编译不会出错,它也没有任何实际意义。原创 2022-02-22 17:12:51 · 709 阅读 · 0 评论 -
string::npos的含义
string::npos参数 —— npos 是一个常数,用来表示不存在的位置例如,有两个字符串a、b,判断a字符串是否包含b字符串//如果字符串不存在包含关系,那么返回值就一定是nposif(a.find(b)!=string::npos){ cout<<"yes"<<endl;}else{ cout<<"no"<<endl;}...原创 2021-11-19 11:42:48 · 801 阅读 · 0 评论 -
C++中vector和string的reserve用法
转载自:https://blog.csdn.net/youtherzhang/article/details/65659073Vector的用法说明:https://software.intel.com/zh-cn/blogs/2011/08/10/c-vector======================================================关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,转载 2021-11-18 17:25:37 · 566 阅读 · 0 评论 -
[C++]Vector的reserve函数
前段时间,看了公司几个前辈的代码,发现他们特别喜欢用Vector,而且总喜欢定义之后直接reserve一定的空间。在我的印象中reserve只是保留一定的空间而已好像没有多大的用处,然后就查了一下,发现reserve好像会直接去分配内存空间(虽然不会改变size)。于是写了一个小程序验证一下,结果发现,当数据量比较大的时候用reserve可以加快push的速度,于是又Get一个知识点。下面给出测试代码和结果#include<fstream>#include <vector>转载 2021-11-18 17:14:26 · 1014 阅读 · 0 评论 -
C++ 中override的作用
描述:override保留字表示当前函数重写了基类的虚函数。目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。用法:在类的成员函数参数列表后面添加该关键字既可。例子:class Base {virtual void f();};class Derived : public Base {void f() override; // 表示派生类重写基类虚函数fvoi转载 2021-11-17 11:10:03 · 642 阅读 · 0 评论 -
C++中atoi()函数的用法
1 功能atoi()函数将数字格式的字符串转换为整数类型。例如,将字符串“12345”转换成数字12345。2 格式该函数的格式为int atoi(const char* str)其中,参数str是要转换的字符串,返回值是转换后的整数。3 注意事项3.1 关于参数的注意事项在“2 格式”中提到,atoi()函数的参数是要转换的字符串。该字符串的格式为[空格][符号][数字]其中,空格可以是键盘中的空格字符或者是Tab字符;符号可以是表示正数的“+”,也可以是表示负数的“-”;数字即为数转载 2021-11-16 16:36:54 · 1522 阅读 · 0 评论 -
C++ protected的用法
#include<iostream> using namespace std; class A{protected: int m;}; class B: public A{public: void show() { m=10; cout<<"m is :"<<m<<endl; }}; void main(){ B p;// p.m= 10; 这个会报错,因为m在A中是prot原创 2021-11-16 15:30:08 · 801 阅读 · 0 评论 -
C++中virtual(虚函数)的用法
在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念。什么是虚函数:虚函数是指一个类中你希望重载的成员函数 ,当你用一个 基类指针或引用 指向一个继承类对象的时候,调用一个虚函数时, 实际调用的是继承类的版本。 ——摘自MSDN 举例:#include <iostream>using namespace std;class Parent{ p转载 2021-11-16 14:15:39 · 391 阅读 · 0 评论 -
C++中的__FUNCTION__和 __LINE__
LINE, 行号FUNCTION 函数打印了__FUNCTION__和__LINE__, __LINE__是在代码中对应的行数,__FUNCTION__是对应的函数名打印结果原创 2021-11-13 15:52:01 · 1962 阅读 · 0 评论 -
uint32_t 类型
整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。**无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-3276832767,而unsigned能存储的数据范围则是065535。**由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是转载 2021-11-13 14:13:47 · 1584 阅读 · 0 评论 -
C++注释添加与取消快捷键
注释:ctrl + K + C取消注释:ctrl + K + U原创 2021-11-12 09:33:37 · 2611 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern “C” void fun(int a, int b);则告诉**编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++**的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$原创 2021-11-11 17:16:25 · 560 阅读 · 0 评论 -
C++中的json生成解析库rapidjson
rapidjson是一个高效的C++ JSON解析/生成器,具有小而全、快且独立等优点,具体用法如下1、基本单元rapidjson的基本操作单元:Document以及Value例:当有一个json案例,请让我们称之为test.json{ "test_int": 100, "test_float": 100.9, "test_string": "asd", "test_float_array": [], "test_object": { "vec_key": [9, 3, 5, 7, 2转载 2021-09-23 16:55:45 · 1061 阅读 · 0 评论 -
vs2017下载安装教程
同时给的在线安装程序,运行完一下界面就啥也没有了,没有然后了,网上重新下载的也不行,最后可以用你的github账号登录微软的官网,下载即可安装,详见:https://baijiahao.baidu.com/s?id=1633409008168920904&wfr=spider&for=pc接下来网上的教程就很多,随便操作一个http://c.biancheng.net/view/456.html...原创 2021-08-18 15:59:35 · 488 阅读 · 0 评论 -
#undef 的用法及其意义
在Visual Studio2008中编写如下代码:#include <iostream> using namespace std; int main() { #define MODI 10 cout << MODI << endl; #undef MODI cout << MODI + 1 << endl; return 0; } 编译器会对 cout << M转载 2021-08-02 18:58:01 · 556 阅读 · 0 评论 -
#ifndef/#define/#endif使用详解
转载自:https://blog.csdn.net/abc5382334/article/details/18052757想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?其实“被重复引用”是指一个头文件在同一个cpp文件中被in转载 2021-08-01 16:09:54 · 189 阅读 · 0 评论 -
C++多线程中的join, detach, joinable
thread是C++11中提供多线程编程的模块,使用的时候需要包含头文件。首先我们先来看一下简单的hello world的多线程的代码这个创建的方式就是以函数作为一个入口,创建了一个子线程,那么创建的语句就是第11行代码所示,所传入的参数就是入口的函数名。在创建了这个子线程之后,这个子线程就开始运行了,同时主线程也不停的往下运行,当碰到t.join()这句代码的时候,就表示主线程需要等待子线程运行结束回收掉子线程的资源后,再往下运行,否则就会产生一种情况:当子线程还没有运行完主线程先运行完了,那么就会原创 2021-08-01 14:48:55 · 375 阅读 · 3 评论 -
C/C++中的.h和.c文件
编译器的工作过程涉及到的函数、结构体、变量等比较多。通常,编写c/c++项目的方式是,有一个main.c文件,该文件的main函数作为接口,调用其他函数。所有其他函数按功能,分别放在不同的.h文件中,这样的方式在编译和运行上肯定是没有什么问题的。随着项目编写的深入,结构、逻辑以及变量的日趋复杂,总感觉上述方式的实现仍然不够清晰并且会导致一些冗余。忽然记起,在课堂上,老师提到过,.h文件一般用来存放函数声明和变量名,那么为什么我在.h文件中实现函数不会有问题呢?其他.c文件和main.c文件又有什么关系呢原创 2021-08-01 13:53:56 · 1290 阅读 · 0 评论 -
‘sprintf’ was not declared in this scope
添加头文件#include <stdio.h>原创 2021-07-31 19:51:28 · 1052 阅读 · 1 评论 -
C++11 静态断言—static_assert
传送门:https://www.cnblogs.com/Braveliu/p/12220769.html转载 2021-07-30 11:15:11 · 80 阅读 · 0 评论 -
编译时断言(静态断言)
Robert C.Seacord的《C安全编码标准》的第3章第3条规则:DcL03-C.使用静态断言测试常量表达式的值那么什么是静态断言呢?静态断言就是编译时断言,它是针对动态断言(运行时断言)而言的,静态断言的用处就是能检查出编译时的错误,避免把错误带入到运行时。那么静态断言怎么实现呢? 方法比较简单,利用C/C++的数组声明中的数组下标必须是正值这个规则就可以了。#define CCASSERT(exp) extern char constraint_violated[2*((exp)!=0)转载 2021-07-30 11:06:45 · 482 阅读 · 0 评论 -
嵌入式之模块去初始化
嵌入式之去模块初始化初始化和去初始化一般是成对出现的,而很多时候,往往会忽略去初始化过程,因为部分的情况下,进程一结束,资源就会被系统自动回收,也就没有去初始化的必要,这个很容易养成忽略去初始化的过程,系统资源管理考虑不全的习惯。当分配堆内存时,申请共享内存、申请锁资源等系统资源时,如果在进程退出后,不做销毁、释放,就会占用系统的资源,影响资源的配置、进程的正常运行。所以不管什么时候,都应该养成去初始化的习惯。去初始化只要考虑一下以下方面:(1)内存释放(2)线程释放(3)系统资源销毁(共享内存、转载 2021-07-30 09:02:57 · 223 阅读 · 0 评论 -
unsigned long int
(1)unsigned long int unsigned long int在C语言中是无符号长整形变量,是整形变量的一种。unsigned long int 与unsigned long是等价的,即定义的时候int可以不写。 C语言字节数为4,与long型数据一样。 unsigned long int的取值范围: 0~4294967295 即 0~(2的32次方-1) unsigned 是无符号 long是长 int是整型数据 unsigned long int 就是无符号长整型原创 2021-07-27 09:48:25 · 3218 阅读 · 0 评论 -
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
原创 2021-05-31 10:15:17 · 141 阅读 · 0 评论 -
C语言中extern的用法
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量。还有很重要的一点是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函数fun定义的开头处声明extern int v,然后就可以引用到变量v了,只不过这转载 2021-05-28 16:42:58 · 633 阅读 · 0 评论