
C与C++学习之路
文章平均质量分 69
c++相关调试错误,解决记录
龙叙
c与cpp、linux为主,励志于嵌入式领域,要注重原理,多动手编程,加油!!!
展开
-
C++多线程学习
需要加入头文件include线程是从一个函数开始的,将要放在子线程里运行的代码放入一个函数中(这里以myprint()函数为例),通过std::thread mytobj(myprint);新建一个线程,再通过mytobj.join();让主线程等待子线程运行结束。thread新建的对象的参数列表里应该传入的是可调用对象,可以是函数名,可以是类,还可以是仿函数。如果thread新建的对象的参数列表里参数是类,该类必须重写operator()函数,且新建线程时会拷贝该对象,会调用拷贝构造函数。#incl原创 2021-07-25 16:58:41 · 331 阅读 · 0 评论 -
STL总结学习
文章目录STL: standard template library1.容器序列式容器arrayvector1.vector添加元素(push_back()和emplace_back())详解2.vector插入元素(insert()和emplace())详解3.STL vector删除元素的几种方式STL: standard template libraryC++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如转载 2021-05-21 19:12:17 · 288 阅读 · 0 评论 -
拷贝构造函数
文章目录1.拷贝构造函数以拷贝的方式来初始化对象的使用场景必须使用深拷贝情景举例(1)类具有动态分配的内存(2)创建对象时进行一些预处理工作2.C++重载=(赋值运算符)3.C++拷贝控制操作(三/五法则)什么时候需要拷贝和赋值操作1.拷贝构造函数默认的拷贝构造函数很简单,就是使用“老对象”的成员变量对“新对象”的成员变量进行一 一赋值,和上面 Student 类的拷贝构造函数非常类似。对于简单的类,默认拷贝构造函数一般是够用的,我们也没有必要再显式地定义一个功能类似的拷贝构造函数。但是当类持有其它资转载 2021-05-21 15:11:28 · 3497 阅读 · 2 评论 -
Ubuntu下安装cmake的步骤
1、查看当前cmake的版本:cmake --version(如果没有安装就会报错)2、下载cmake安装包,先建一个文件夹,cd到该文件夹下下载:wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz解压:tar -zxv -f cmake-3.17.1.tar.gz3、执行cd cmake-3.9.2./configure(这一步要很久)sudo make && make install出现如下问题:解决办法:sud原创 2021-05-14 11:06:11 · 5008 阅读 · 0 评论 -
关于char *作为函数参数的讨论
关于char *作为函数参数的讨论主程序声明char *fileName = NULL,被当成参数传递到函数中去。函数中是这样使用的:显然因为char *fileName 只能存放一个char,所以报错了。2.在主函数中声明主程序声明char fileName = NULL,在函数中使用fileName = (char)malloc(100)实际上在函数中才知道malloc的长度,但这样做时,当函数运行结束后,fileName仍然为NULL,函数中malloc的空间貌似被清除了,反正就是不行原创 2021-03-15 20:34:25 · 3915 阅读 · 0 评论 -
#ifndef xx #define xx #endif原理详解
文章目录1.简介2.原理1.简介该语句是条件编译的一种,一般用在c、c++头文件中,防止头文件被重复包含。2.原理假设在matrix.h中有如下代码1:代码1:#ifndef __MATRIX_MUL__#define __MATRIX_MUL__ 函数与变量声明#endif假设在main.c中对matrix.h错误地重复包含两次,有如下代码2:代码2;#include "matrix.h"#include "matrix.h"int main(){ return 0;}原创 2021-03-11 16:20:29 · 553 阅读 · 0 评论 -
关于c语言字符串的讨论
关于c语言字符串的讨论文章目录c语言字符串只可以用char数组保存字符串结束符具有截断作用,会改变字符串数组的大小。确定长度大小(size)的字符串数组只能容纳size-1个字符c语言字符串只可以用char数组保存不能用其他如int数组保存,否则编译会出错测试:字符串结束符具有截断作用,会改变字符串数组的大小。测试:确定长度大小(size)的字符串数组只能容纳size-1个字符测试举例字符串数组长度为7,但是只能容纳6个字符,而且用strlen函数测得字符串的长度为7-1=6。测试结原创 2021-03-09 20:01:52 · 461 阅读 · 0 评论 -
学习递归
递归入门例子:【一听就懂】什么是递归?所有的循环(loop)都可以转化为递归(recursion),递归不一定能转化为循环。注意最终就只有一个return了,不是之前想的递归到出递归条件后的一层一层return回来。之前的想法是错误的。...原创 2021-03-02 16:51:51 · 124 阅读 · 0 评论 -
C++ for(char c:s)遍历字符串 增强型for循环
C++ for(char c:s)遍历字符串相当于C++的:for( int i = 0; i < s.length(); i++){ s[i].... }使用for (char c : s)时会复制一个s字符串再进行遍历操作,而使用for (char& c : s)时直接引用原字符串进行遍历操作,由于复制一个字符串花费了大量的时间,所以第一种解法要快于第二种解法。...原创 2021-02-26 15:02:55 · 18236 阅读 · 2 评论 -
python将数据存为二进制,并用C读取
python将数据存为二进制,并用c++读取文章目录python保存二进制文件c语言读取二进制文件到数组后续疑问值得学习的文章python保存二进制文件python将float32类型的numpy数组以二进制形式保存到txt文本中代码with open("D:\\10GraduationProject\\vedioData\\data_process\\ucf5\\conv1.txt",'wb') as f: f.write(checkpoint['state_dict']['conv1.原创 2021-02-26 00:20:32 · 6420 阅读 · 0 评论 -
vs2015栈溢出的解决办法以及读取一个超大数组的方法
文章目录错误产生的原因解决办法错误现象一错误现象二错误产生的原因vs默认的栈的大小只有1M,当定义的数组大于1M时就会直接报对战溢出的错误。解决办法此时应该设置vs里栈的大小,设置大一点比如50M,参考这篇文章进行: 修改visual studio的默认堆栈大小错误现象一产生错误的代码:int main(){ int f[5000000]; return 0;}错误现象:错误现象二产生错误的原因,头文件包含的数据很大,接近1个G其中这些头文件包含的数据很大,接近1个G:原创 2021-02-24 22:00:26 · 2410 阅读 · 0 评论 -
看完这篇文章一定弄懂C语言数组作为函数参数的用法
C语言数组作为函数参数文章目录一:数组元素作为函数的实参二:数组名作为函数的实参关于数组作为函数参数调用的讨论关于函数定义的参数表的讨论获取二维数组的行和列更高维数组作为函数参数同二维数组类似参考文档一:数组元素作为函数的实参数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。 因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变原创 2021-02-23 18:28:42 · 15932 阅读 · 8 评论 -
C++小记
C++小记,平时遇到的一些小技巧与知识盲区,也不造轮子了耽误时间,仅仅作为自己的学习集锦。文章目录C++控制小数位输出C++控制小数位输出使用cout << setiosflags(ios::fixed) << setprecision(n)函数显示n位小数#include <iostream>#include "data.h"#include <iomanip>using namespace std;int main(){ cout &原创 2021-02-17 13:34:19 · 425 阅读 · 2 评论 -
std::copy()函数使用
官方手册:http://www.cplusplus.com/reference/algorithm/copy/文章目录copy()简介等价操作实现例程测试1例程测试2copy()比用for循环逐个拷贝效率高copy()简介copy()函数属于易变算法,所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等。该函数主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复制目标result给定的区间[resul原创 2021-02-07 00:44:28 · 5027 阅读 · 1 评论 -
迭代器学习笔记
内容均为来自于互联网,整理一遍主要是为了加深印象,便于复习。文章目录迭代器引入迭代器类别迭代器测试流迭代器--输入迭代器附迭代器引入迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用“迭代器(iterator)”来实现。那么,迭代器到底是什么呢?我们知道,尽管不同容原创 2021-02-06 20:14:14 · 268 阅读 · 0 评论 -
binary ‘>>‘: no operator found which takes a right-hand operand of type ‘std::string‘
文章目录问题解决方法解释问题binary ‘>>’: no operator found which takes a right-hand operand of type ‘std::string’ (or there is no acceptable conversion) 解决方法增加包含头文件#include <string>解释使用std::string而不包含它的头文件可以在一些编译器上工作,这些编译器会间接将的部分导入到或其他头文件中,但这不是标准的,不原创 2021-02-06 11:53:16 · 1113 阅读 · 0 评论 -
规范的链表写法之有空头链表
链表这个东西不是很简单,多次重复学习,看视频敲代码才终于变成自己的知识。文章目录带空头的链表带空头的链表添加节点,尾添加//创建链表。在链表中增加一个数据//尾添加void AddNodeToList(int a){ //创建一个节点 //在vs里malloc会自动进行数据类型转换,但是在别的编译器里,不写强制类型转换,该malloc会报错。 struct Node* pTemp = (struct Node*)malloc(sizeof(struct Node)); pTemp-&g原创 2021-01-26 21:22:47 · 918 阅读 · 0 评论 -
给char[]赋初值
转载 2020-07-14 17:35:04 · 2453 阅读 · 0 评论 -
gcc与g++是什么以及区别、编译器与编辑器的区别(文章待完善)
文章目录什么是gcc / g++gcc和g++的主要区别什么是gcc / g++看的Linux公社的一篇文章,觉得不错,内容复制过来了。其实在这之前,我一直以为gcc和g++是一个东西,只是有两个不同的名字而已,今天在linux下编译一个c代码时出现了错误才找了一下gcc和g++的区别。先描述一下今天遇到的错误:因为以前写程序的时候,写的都是cpp文件,然后就直接使用g++编译,没出错,也就没有在意过这些问题,今天有一个c文件,但里面包含后STL中的vector语法,想着使用gcc来编译,结果报错转载 2020-06-15 23:10:22 · 520 阅读 · 0 评论 -
C++SLT入门简介
文章目录STL使用STL的好处STLSTL(Standard Template Library,标准模板库),它是由惠普实验室开发的一系列标准化的组件,目前是C++的一部分。‚STL的代码从广义上讲分为三类:container(容器)、iterator(迭代器)和algorithm(算法),容器和算法通过迭代器可以进行无缝地连接。ƒstring,wstring也是STL的一部分使用STL的好处STL是C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。STL的一个重要特点是数据结构原创 2020-06-12 16:16:02 · 826 阅读 · 0 评论 -
C++读数据,待补充
C++读数据#include <fstream> #include <iostream> #include <string> using namespace std;long long length = 1000; //默认绘制长度 signed char* mydata = new signed char[length];ifstream myfile("D:\\1workingFiles\\RSHI1new\\data1.txt");float* te原创 2020-06-04 20:58:34 · 273 阅读 · 0 评论 -
委托机制(讲解简明扼要)
转载于https://zhidao.baidu.com/question/92027440.html委托就是把具体事情让别人做,我只调用你的函数来。下面是一个例子:class RealSort{public:void sort();};class MySort{private:RealSort rs;public:GetName(RealSort rs){this.rs = rs;}void sort(){rs.sort();}};这里MySort将具体事情sort委托转载 2020-06-03 13:26:25 · 628 阅读 · 0 评论 -
C++不同数据类型的数据进行运算,数据类型问题
C++不同数据类型的数据进行运算,数据类型问题int型除以double型,结2113果是double型自动转换遵循以下规则:若参与运算量的类型不同,则先转换成同一类型,然后进行运算。转换按数据长度增加的方向进行,以保证精度5261不降低。如int型和long型运算时,先把int量转成long型后再进行运算。a.若两种类型的字节数不同,4102转换成字节数高的类型b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型3)所有的浮点运算都是以双精度进行的,即使仅含float单精原创 2020-06-02 01:13:01 · 4917 阅读 · 0 评论 -
C++ 文件的概念、流是什么
流是什么文件是什么文件分为两类原创 2020-06-01 00:17:51 · 388 阅读 · 0 评论 -
彻底 弄明白C++标准库、字符串流
C++标准库C++标准库是一个类和函数的集合,由c++标准委员会制定,在c++程序开发中提倡尽可能使用标准库,标准库里的函数和类都是经过严格地测试,所以其正确性非常有保障,其次标准库里地函数和类都是由非常有经验地程序员开发的,因此这些代码的执行效率非常高,最后由于它作为一个标准提供给大家使用,我们就不必再花费人力物力再去重新开发这些代码,那么在开发软件时就大大降低了开发成本。支持系统时钟,系统的时间课以用里面的函数操作,STL库是c++中最新的,极具革命性的部分,是一个具有工业强度的、高效原创 2020-05-31 01:09:03 · 181 阅读 · 0 评论 -
彻底弄懂虚函数、多态的条件、纯虚函数、抽象类
虚函数的定义程序员习惯地给派生类的同名函数也加上virtual多态的条件原创 2020-05-30 17:21:10 · 219 阅读 · 0 评论 -
命名空间的定义与使用详解
命名空间可以和操作系统对目录的管理作类比。可以在一个根目录下建立不同的子目录,子文件夹中可以有和别的子文件夹下相同名字的文件。命名空间可以嵌套命名空间的使用...原创 2020-05-30 17:06:08 · 543 阅读 · 1 评论 -
多态性的概念、静态联编、动态联编、虚函数
多态性的概念参考mooc魏英老师《c++程序设计》虚函数是多态性的精华联编与静态联编动态联编这样就实现了同一个指针指向不同的对象调用的成员函数是所指对象的成员函数。...原创 2020-05-30 01:15:01 · 161 阅读 · 0 评论 -
多重继承派生类、二义性问题、名字支配规则、虚基类、重载重写重定义之辨析
多重继承参考mooc魏英《c++程序设计》二义性问题:名字支配规则:原创 2020-05-29 20:33:46 · 519 阅读 · 0 评论 -
复制构造函数与合成复制构造函数
复制构造函数与合成复制构造函数参考至mooc魏英《c++程序设计》深浅复制的问题在https://blog.csdn.net/weixin_40162095/article/details/106366843中讨论了。原创 2020-05-29 18:14:19 · 153 阅读 · 0 评论 -
定义默认构造函数、隐式类类型转换
默认构造函数参考自mooc魏英《C++程序设计》如果一个类有默认构造函数,在定义对象时该对象后面可以不加任何实参。默认构造函数有两种,上面的说法应该有点问题,下面的是对的。隐式类类型转换应该用explict避免隐式类类型转换。...原创 2020-05-29 15:34:18 · 208 阅读 · 0 评论 -
彻底弄明白派生类的构造函数与析构函数
派生类的构造函数参考自mooc魏英老师《C++程序设计》从基类继承过来的数据成员就只能在初始化列表(基类名(基类构造函数实参列表))中进行初始化,而新增加的数据成员既可以在派生类初始化列表1也可以在派生类初始化函数体中2初始化。构造函数调用顺序:基类构函数、子类构造函数、派生类构造函数函数体public:Rect(int a,int b,int c,int d):x(a),y(b),h©,w(d) { } ,这样是不对的,因为x和y是基类私有成员是无法直接这样访问的。而基类的构造函数是pub原创 2020-05-29 13:31:45 · 316 阅读 · 0 评论 -
派生类成员的访问与兼容性规则
类的保护成员当我们看到一个类它有保护成员,则在这个程序当中肯定是有它的派生类。即便是共有继承,基类的私有成员继承类仍然是不可使用无法访问的。inaccessible 不可访问的。赋值兼容规则赋值兼容规则的前提是建立在共有继承的基础上的。如果是保护继承与私有继承是没有这样的赋值兼容规则的。...原创 2020-05-29 12:31:58 · 181 阅读 · 0 评论 -
彻底弄懂友元函数与友元类
友元函数与友元类参考自mooc魏英《C++程序设计》A的意思是,友元函数不是该类的成员,所以不受该类public,proteced,private影响。友元函数定义:P处用到了B类的引用,而B此时还没有定义,所以要在用到B类的前面声明(前向声明)B,如在Q处声明了B,然后就可以在其他地方定义B了。另外void setb(B& r)是A类里面的成员函数,所以要谢写成 frind void A::setb(B& r)...原创 2020-05-29 00:03:42 · 191 阅读 · 0 评论 -
彻底弄清楚C++ static 静态成员与静态成员函数的原理
参考mooc魏英《C++程序设计》文字是魏老师的讲解,纯手打,ppt上没有。为什么会用到静态成员:现在大型应用程序都是由多个程序员所开发的,那么多个程序员就需要使用一个共同都能使用的数据来解决一些问题,采用静态数据成员解决这一问题。思考一下现在我们需要统计员工的总人数,能不能在这个员工类中增加一个成员专门用来存放总人数呢?这样做是不好的:1.每个对象都要增加一个这样的成员,对存储空间是一种浪费。对于公司来说,总人数只有一个值,那么每个对象都要增加一个这样的成员,浪费存储空间。2.使用不方便,当总人数原创 2020-05-28 22:32:58 · 1882 阅读 · 0 评论 -
继承的定义,父类,子类,基类,继承类,多重继承,派生类的构成
继承的定义,父类,子类,基类,继承类,多重继承注意这里b.print()调用的是派生类里面的函数,如果要调用基类里面的print()函数,需要这样做:b.base::print()原创 2020-05-27 23:43:34 · 420 阅读 · 0 评论 -
彻底弄明白extern 用法与项目生成的流程
extern 用法extern int i; //声明,不是定义int i; //声明,也是定义原创 2020-05-27 15:38:30 · 332 阅读 · 0 评论 -
常对象、常成员、常指针、常引用
常对象、常成员、常指针、常引用取自mooc魏英老师《C++编程设计》常对象数据成员只能被常成员函数访问,但是不能被修改。const Data& r 保证了r不会被修改,只是拿来使用。...原创 2020-05-27 14:27:47 · 323 阅读 · 0 评论 -
C++构造函数定义、重载、带默认参数的构造函数
C++构造函数注意事项取自mooc魏英《C++编程设计》可见构造函数初始化列表只在构造函数的定义中而不是函数原型声明中指定。如果没有A,则会编译器会调用point的默认构造函数,而如果此时point又没有默认构造函数(没有没有参数的构造函数),编译器就会报错。...原创 2020-05-27 14:00:12 · 2196 阅读 · 1 评论 -
类的作用域与生命周期
mooc魏英老师《C++编程语言》类的作用域Data &r=obj; //定义引用r便作为了obj的别名,r就是obj,obj就是r。嵌套类生命周期原创 2020-05-27 13:33:38 · 121 阅读 · 0 评论