抛出问题 最近碰到一个问题点,这里跟大家分享一下。有一个二维数组,我想把它传给一个函数。于是我把函数接口定义出来了,如下: int array[2][3] = {1,2,3,4,5,6};void fun(int **array) { array[0][0] = 5;} 当我试图直接把数组名传给函数时候,fun(array)编译会报错,大概意思就是类型不匹配。既然类型不匹配,那我就直接强转成你所需要的类型,于是我又做了调整,fun((int **)array),这下确实不报错了。但是此时我还没意识到问题...
1 输入输出IO流 1.1 图解输入输出流 IO设备:文件、终端(dos黑框框)、特殊的数据类型(streamstring) 1.2 输入输出流类库 C++中的输入输出流是靠定义好的类库来操作的 2 文件读写操作 2.1 文件的打开方式 2.2 文件读写类库的头文件 头文件:fstream fstream:读写 istream:读操作 ofstream:写操作 2.3 文本文件读写 使用ofstream来写文本 ofstream写入文件默认打开方式是ios::trunc,即没有文件那么创建,该文件存...
🐱作者:傻响 🐱专栏:《C++内存管理》 🔥格言:你只管努力,剩下的交给时间! 目录 No.1 C/C++内存分布 No.2 C语言中动态内存管理方式malloc/calloc/realloc/free No.3 C++内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 No.4 operator new与operator d...
有人问我c++资料该读那些,其实每个多少都有自己的阅读习惯,但先易后难,反复研读是每个学习c++的人都会遵循的规律。我下面给出自己曾阅读过的c++书籍及阅读心得给到给各博友。 假设大家对c/c++有一定的基础概念: 推荐的阅读顺序,先概读(读目录、标题)、再细读(读主功能、主特性)、后续按需精度(带问题、带实际项目需要): 次序1 : 《1.C语言深度解剖.pdf》开始c学习,可以较充分地进一步了解c语言特性 《2.Essen...
先看一道经典的C语言题:用变量a给出下面的定义 a) 一个整型数(An integer) b)一个指向整型数的指针( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r d)一个有10个整型数的数组( An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integer...
一:结构体 结构:一些值的集合,这些值称为成员变量,结构中的每个成员变量都是不同类型的变量。 声明:struct //结构体类型(tag可以省去,此时为匿名结构体类型)struct tag{ //成员列表 member-list; //变量列表(不仅可以用基本数据类型,也可以引用自己) } variable-list;//举例struct Stu{ char name[15];//成员变量name int age; //成员变量age}s1,s2,*p; //s...
目录 一、beegfs-helperd日志源码分析 1.1 启动helperd App服务 App类主要方法 启动helperd App相关服务,App 运行流程。<...
opencv3第4章例题 opencv4第4章例题1ASCII 打印机 建立一个500x500大小的单通道图像,每个像素值都为0 1.创建一个ASCII数字打字机,你可以在自己的电脑上输入数字,并在一个20像素高、10像素宽的方格中显示数字。当你键入时,数字从左到右显示,知道到达图像末尾才停止。 2.允许键入回车和退格。 3.允许使用箭头来编辑每个数字。 4.创建一个键来将输出图像转化为彩色图像,每个不同的数字由不同的颜色显示。 本次创建100x100像素图 #include <opencv.hpp...
《C++入门学习》首页 开发工具 在学习c++语法之前,我们先看下c++的开发工具。c++的开发工具可以分为 代码编辑器 + 编译链接工具 一. 代码编辑器 vim linux系统上的老牌编辑器,有人爱、有人恨。个人还是比较喜欢的,主要是需要熟练掌握vim的一些快捷键,以及配置相应插件。很轻巧、便捷。功能相对没有现代IDE那么丰富。 Visual Studio 支持 mac、windows、linux 桌面版。比较重,但是相较与vim,不单是个代码编辑器,还支持工程管理、代码跳转、代码格式化,还可以很...
TinyXml下载地址: TinyXML download | SourceForge.net 将压缩包中的 tinystr.cpp , tinystr.h , tinyxml.cpp , tinyxmlerror.cpp , tinyxml.h , tinyxmlparser.cpp 这六个文件放到项目工程中。 代码如下: #include <iostream>#include tinystr.h#include tinyxml.husing namespace std;int Creat...
准备工作 在 Vscode 里配置C/C++运行环境,首先,需要下载 C/C++ 的开发环境,然后将 C/C++ 的开发环境添加至系统变量中。 第一步 下载vscode VsCode大家应该都会下,这里就不提供VsCode的下载与安装教程了 第二步 下载mingw 这里采用mingw作为 C/C++ 开发环境,官网链接如下 官网链接:MinGW官网 下载完成后我们会得到这样一个安装程序 双击打开 然后我们找到mingw的安装文件夹 依次输入 mingw-...
0. 概念 基本类型枚举类型 只能被赋值一定的离散整数值变量 void类型 类型说明符,表明没有可用的值 派生类型 指针类型、数组类型、结构类型、共用体类型和函数类型 其中:函数类型指的是函数返回值的类型 表达式与语句 表达式必须返回一个结果 语句可以没有结果 表达式 表达式 由运算符和操作数构成 表达式 也可仅由操作数构成 : 这种最常见的就是常量表达式 4(字面值) ‘A’(字符) “abc”(字符串) 〉每个表达式都有一个返回值;常量表达式的返回值就是其本身 4 4...
参考 https://cplusplus.com/reference/clibrary/ 1. 概念 函数必须先定义后调用,所以main要放在最后 函数不能嵌套定义,没有闭包函数的概念 形参 形参变量只有在函数被调用时才会分配内存,调用结束后,立即释放内存,所以形参变量之后在函数内部有效 实参 实参可以是常量、变量、表达式、函数等,无论实参时何种类型的数据,在调用函数时都必须有确定的值 实参和形参在数量上、类型上,顺序上必须严格一致,可以自动进行类型转换 实参、形参可以同名,单他们之间...
1. 概念 分类 根据数据类型的不同: 数值数值字符数组指针数组结构数组 概念 C语言数组在存储时,是行优先 多维数组下,如二维数组,可以看成是嵌套:一个数组可以作为外部数组的一个元素 C语言数组是静态的,不能插入或删除元素(数组一旦被定义,占用的内存空间就是不可改变的,但是可以修改和读取数值),如果要改变一个数组,就要再造一个数组 数组类型 注意:数组也是有类型的!!! int a[10]; // 数组a的类型是int [10] 数组与内存 数组内存时连续的,(连续的内存为指...
define关键字在C/C++中代表是一个宏定义命令。define的使用效果和Word中的替换(Ctrl+F)效果一样。define宏命令在C/C++中的应用有两种,(1)有参宏定义。(2)无参宏定义 1、无参数的宏定义 形式: #define idName Value 在C/C++中,凡是 以#开头的都是预处理命令,define是宏定义命令,idname是宏名,而Value可以是常数、字符串、表达式等。 例如: #define NUM 123 这样NUM就被定义为了123。 2、有参数的宏定义 有参数的...
一、 Linux 动态库选择顺序指: 编译程序时用到动态库,该从那些地方查找,按照怎么样的顺序查找? 运行程序时需要动态库,该从那些地方查找,按照怎么样的顺序查找? 二、gcc 编译程序时查找SO顺序如下: gcc 编译时参数-L指定的路径 环境变量 LIBRARY_PATH 系统默认库位置 /lib /usr/lib 三、Linux 程序运行时查找SO顺序如下: gcc 编译时指定的运行时库路径 -Wl,-rpath 环境变量 LD_LIBRARY_PATH ldconfig 缓存 ...
#include<stdio.h>main(){ int g, m, x; printf(100可以买:\n); for(g=0;g<=20;g++) for(m=0;m<=33;m++) for (x = 0; x <= 100; x++) { if ((g * 5 + m * 3 + x * 1 / 3) == 100) printf(%d只公鸡%d只母鸡%d只小鸡\n, g, m, x); }} ...
假装前言 使用Mysql的C API,编写一个连接Mysql数据库实例的代码。 安装Mysql C API 这个有点麻烦,如果Windows平台下的Mysql Installer的话,安装个Mysql Server。相关的头件,库文件在如下 的目录下面。 实例代码 人好话不多,直接上代码。 #include <iostream>#include <assert.h>#include mysql.h#pragma comment(lib, libmysql.lib)int ma...
虚函数表指针位置分析 类有虚函数,这个类会产生一个虚函数表 类对象有一个指针,指针(vptr)会指向这个虚函数表的开始地址 #include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <iostream>class A{public: int m_val; virtual void test() {} };int main(int argc, char **argv){ ...
C++获取计算机硬件信息(Windows) https://blog.csdn.net/hhy321/article/details/121258036 C++获取计算机硬件信息(Linux) https://blog.csdn.net/hhy321/article/details/127930470 “春赏百花秋望月,夏有凉风冬观雪。若无闲事挂心头,便是人间好时节。” 1、简介 Linux 内核并不是操作系统,它是一个完整系统的组成部分。Linux 内核控制着Linux 操作系统的基本硬件,具...
代码折叠 Ctrl + M + O: 折叠所有方法 Ctrl + M + L: 展开所有方法 Ctrl + M + M: 折叠或者展开当前方法 Ctrl +shit+\跳转到大括号的开始或者结束 格式化代码 Alt+shift+A...
注:Ubuntu20.4以上版本安装gnome-tweak-tool可以实现隐藏顶栏了,但20.4还需要安装一下扩展模块,教程如下: 在Ubuntu中有两个扩展工具都支持隐藏顶栏。 1、安装autohidetopbar。 sudo apt install gnome-shell-extension-autohidetopbar 2、安装dash-to-panel sudo apt install gnome-shell-extension-dash-to-panel 它们都是gnome-shell-ex...
乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。 PAT (Basic Level) Practice 1087 有多少不同的值 问题分析 题设要求给定一个正整数N,然后给定一个公式, 要求从1到正整数N分别代入到公式中得到的结果中, 可以得到哪些值的集合。 这题目的要求……也太简单明确了吧……可以用数据模型集合来存储结果. C语言中没有集合, 可以使用数组存储结果, 索引对应结果, 索引位置的值对应出现的次数. 完整描述步骤 获取输入: 正...
#include <iostream>using namespace std;// 适用avg这种两个参数的函数string getWholeExpression(string func_name, string line, int& begin, int& period, string& alpha) { string periodStr, alphaStr; bool isPeriod = true; for (int i = begin + 1;...
练习5.1 什么是空语句?什么时候会用到空语句? 只含有一个单独分号的语句为空语句;在程序某处语法上需要一条语句而逻辑上不需要时,使用空语句。 练习5.2 什么是块?什么时候会用到块? 使用花括号括起来的(可能为空)的语句和声明的序列称为块;在程序某处语法上需要一条语句而逻辑上需要多条时,使用块。 练习5.3 使用逗号运算符重写1.4.1节的while循环,使它不再需要块,观察改写之后的代码可读性提高还是降低。 重写代码: #include <iostream>int mai...
练习4.1 表达式5+10*20/2的求值结果是多少? 105 练习4.2 在下列表达式合理位置添加括号,使得添加括号后的运算对象组合顺序与添加前一致 (a)*vec.begin() (b)*vec.begin()+1 成员选择运算符.优先级>解引用运算符*>加法运算符+,所以: (a):表示先获得指向vec[0]的指针,再解引用获得值vec[0]。添加括号:*(vec.begin()); (b):表示先获得指向vec[0]的指针,再解引用获得值vec[0],最后加1。添加括号:*...
🐱作者:傻响 🐱专栏:《数据结构与算法》 🔥格言:你只管努力,剩下的交给时间! 目录 No.1 C/C++内存分布 No.2 C语言中动态内存管理方式malloc/calloc/realloc/free No.3 C++内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 No.4 operator new与operator d...
概述 在封装一些可变参数列表的函数的时候,会发现不能直接使用 ... 作为参数列表继续往下传,需要先获取参数列表,才能继续往下传。 Demo gboolean GstHelper::setProperty(GstElement* ele, const char* first_property_name, ...){ GObject* obj = G_OBJECT(ele); return_false_if_null(obj);//right va_list vl; va_star...
1、现象: 使用一些第三方的dll,比如opencv,会分别生成debug和release的dll,在exe中必须要引用指定版本的dll,不能混用,否则会出错;同样的道理,jsoncpp库也是。 但是还有一些第三方的dll,比如halcon,只提供给用户release的dll,用户的debug版和release版的exe都可以引用此dll。 如此看来,是有些dll可以混用(交叉引用),有些不可以,两者为什么会存在差异? 2、原因 比如debug的exe调用release编译生成的dll,接口函数的参数如...
17.1 基本概念和实现 17.1.1 并发、进程、线程的基本概念和综述 并发 多个任务(独立活动)同时发生(进行)。 单CPU,操作系统调度,任务切换。 多CPU,硬件并发(并行)。 可执行程序 Windows下exe文件,Linux下有可执行权限的文件(-rwxrw-r–)。 进程 一个可执行程序运行起来创建一个进程,进程就是运行起来了的可执行程序。 线程 每个进程有唯一主线程,随进程启动。 线程理解为一条代码的执行通路(道路)。 每个线程需要独立的堆栈空间(耗费内存,1MB左右),线程切...
智能指针防止内存泄漏,自动释放。 16.1 直接内存管理(new/delete)、创建新工程与观察内存泄漏 16.1.1 直接内存管理(new/delete) new变量,动态分配,堆分配,需delete释放。 int *pi = new int; //未定义int *pi2 = new int();//初始化0int *pi3 = new int(100);string *ps = new string;//断点调试发现string *ps2 = new string();//vector<i...
前几天我对MS进行优化,解决一个时间戳跳变问题。将修改的代码提交后,经过现场测试结果发现双声道录音中有一个通道不正常。我记得这个功能让让同事修改了,在现场运行正常。目前他已经离职了,我打电话询问,他说不知道怎么回事。他平时脑子就不是特别清晰,我也懒得去追究了。然后我静下心分析,最后分析发现,这个离职的同事没有将该修改的代码提交入库。考虑他平时就有些悟性差,我就当做是无心之举了。经过我细心分析,发现了问题BUG,调整后,录音及通话均正常了。闲话少叙,下面我将16K 16BIT的双声道文件格式继...
🧑💻作者: @情话0.0 📝专栏:《数据结构》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! 前言 本文将主要对树、二叉树的相关概念和性质展开讲解,同时用代码实现一种特殊的二叉树(堆)的顺序存储实现。 一、树的基本概念 1.树的定义 树是一种非线性的数据结构,它是由 n(n >= 0)个有限结点组成一个具有层次关系的集合。当 n = 0 时,称为空树。 ① 有且仅有一个特殊的点称为根结点,根结点没有前驱结点; ② 当...
原文 二维数组与二级指针是好兄弟吗 1、引子 想将一个二维数组传给一个函数,定义了如下的函数接口: int arr[2][3] = {1, 2, 3, 4, 5, 6};void fun(int **arr) { arr[0][0] = 5;} 当试图直接把数组名传给函数的时候: /************************************************************************* > File Name: test_array.cpp > ...
测试代码 #include <stdio.h>#include <memory>class CTest {public: CTest() { printf(%s()\n, __func__); } ~CTest() { printf(%s()\n, __func__); }};int main(int argc, char **argv){ std::shared_ptr<void> ptr(new CTest); return 0;} 测试结果...
最近有读者留言,说“想转行音视频开发,怎么做”,正巧,前几天我还在某乎上,看到有人在问音视频的学习资料,还是个大一的学生。 想说一句:真有眼光。 如今这个时代,想赚钱,一个共识是,得先**选对赛道**。有些行业和领域,终其一生的天花板也不过如此。但有的朝阳行业,你一进去就可以获得大量的机会,就是“ROI(投入产出比)”很高。 那就聊聊为啥从事音视频技术,未来会很赚钱。 要说音视频技术,在这两年迎来爆发期。首先 5G 的发展提供了硬件条件,又受疫情的影响,生活场景线上化,大量的线上办公、线上教育、线...
泛型编程之模板 使用实际调用的函数不是同一个,因为不同类型参数,函数栈帧中开辟的空间不一样。参数不一样,所以调用的函数也不一样。使用模板速度必重载速度更快,因为是编译器直接生成。而STL就叫标准模板库。 template<class T>void Swap(T& x1, T& x2) // 本意是用引用&{ T x = x1; x1 = x2; x2 = x;} 特别场景:当函数像求和一样,两个都用模板的T类型,那么T不可以同时为doble和int,...
一、noexcept说明符 1、语法 (1)noexcept 与 noexcept(true) 相同 (2)noexcept(表达式) 如果 表达式 求值为 true,那么声明函数不会抛出任何异常。 (3)throw() //c++17中弃用 c++20移除 与 noexcept(true) 相同(C++17 ) 2、解释 noexcept 说明不是函数类型的一部分(正如同动态异常说明),而且只能在声明函数、变量、函数类型的非静态数据成员、函数指针、函数引用或成员函数指针时,以及在以上这些声明中...
explicit 指定构造函数或转换函数 (C++11 起)或推导指引 (C++17 起)为显式,即它不能用于隐式转换和复制初始化 explicit ( 表达式 ) explicit 说明符可以与常量表达式一同使用。函数在且只会在该常量表达式求值为 true 时是显式的。 explicit 说明符只能在类定义之内的构造函数或转换函数 (C++11 起)的 声明说明符序列 中出现。 注解 声明时不带函数说明符 explicit 的拥有单个无默认值形参的 (C++11 前)构造函数被称作转换构造函数。构造函...
乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。 PAT (Basic Level) Practice 1091 N-自守数 问题分析 题目给定一个定义, 给定一组数, 要求输出能够让每个数符合题设定义的正整数, 不存在这样的正整数时输出No. 需要满足的条件是, 正整数N乘以给定的数K的平方得到的乘积以K为结尾。 如何检查一个数是否以另一个数结尾 方案一: 如果是以数值形式存储两个数 要获取某个数值各个数位上的数字,需要使用取余从后往前获取...
1、创建类名CQTime的类,此类无父类。 2、CQTime可以用于统计代码运行时间。 3、CQTime的实现如下: class CQTime { public: CQTime() { m_iStartTime = 0; } void start() { m_iStartTime = GetTickCount64(); } ULONGLONG restart() { ULONGLONG iTim...
D:\UnxUtils>a did I have fun? did: is a verb I: is not a verb have: is a verb fun: is not a verb ? ^Z D:\UnxUtils> //example.txt did I have fun? If our time is usefully employed, it will either turn out some useful and important piece of work whi...
这个项目属实重量级,第一遍学习的过程比较懵,只是记录一下随堂笔记。后面理解了项目后端代码流程,再细写几篇博客归纳。 基本单机环境配置 大的项目你可能连配置都配不清楚。 新手必须要心细,因为你错了一步,想要纠错很困难。 项目要求: 理解图床的逻辑 理解目前的不足 单线程多线程模式下count项目bug 连接池的使用 使用连接池,加了一些自动归还连接 MySQL连接池 redis连接池 日志相关 :双缓冲、异步 Linux输入命令时,ctrl+a光标回到行首;ctrl+e光标跳至末尾 nginx端口要修...
在CMakeLists.txt中添加math库: target_link_libraries(${CURRENT_FOLDER} m) #-l ...
MCU通常会在工作之前,先经历复位和启动的一个过程,在用户使用过程中往往在这个阶段的工作不是那么的清楚,这里我们就这一话题进行一个讨论。 一.MCU的复位问题 图1 16bit MCU和dsPIC33复位源的种类 一般来说,16位MCU包括dsPIC33的复位源主要包含以上7种,他们都可以对器件产生复位的作用,但是细节有所不同。 图2 复位系统框图 从复位系统框图上看,BOR和POR二者是和VDD电源有关的两种,看门狗和外部复位引脚复位也是比较常见的复位类型。 图3 复位寄存器RCON...
Tcp服务端,实现了多线程,多客户端,互斥,链表,高并发,接收数据,按文件夹分类写入到文件中,是一个用于调试接收打印log,debug等数据的小型tcp服务器。 总体界面 界面Widget,关键逻辑代码 TcpSerWidget::TcpSerWidget(QWidget *parent) : QWidget(parent), ui(new Ui::TcpSerWidget){ //设置相关ui界面 ui->setupUi(this); //初始化界面关联和触发 ...
在 MOEA /D 多目标遗传算法处理过程中,第一步就是生成不同的权重,使得后续搜索结果集趋向于不同的权重。 如下代码 H代表权重被分割成 H 份,将H份相加总和为1, m 代表目标数量。最终目的就是将H分配给m个目标,计算出所有的分配方式。 二维(目标数为2)时均匀分割成5份效果如下图: 三维时均匀分割成5份效果如下图: #include <iostream>#include <set>struct Direction : public std::vector<do...
程序猿小伙伴们都知道,linux系统下如果程序出现崩溃问题,通过设置可以生成core文件,然后开始一波犀利的gdb操作精准地找到问题所在,很是得心应手。那么问题来了,在windows操作系统下会有core文件在程序开小差的时候提供我们分析定位吗,我们有没有很好的手段可以定位问题呢? 客户端崩溃: 其实在windows平台也是可以在崩溃时候生成类似core文件的dump文件,我们可以通过调试dump文件来还原程序崩溃时的状态,调试工具我推荐windbg,屡试不爽,很好用。“Windbg是在windows平台...
一,一维数组 1,数组在内存中是连续的内存空间; 2,数组的数据类型必须一致; 数组定义三种方式; 第一种定义 只定义,不初始化; 数组类型 数组名 [数组长度]; int arr[5]; 第二种定义 定义数组的时候,进行初始化操作; int arr[5] = {1,2,3,4,5}; 第三种定义 定义的数组的同时初始化,但不指定数组长度; int arr[] = {1,2,3,4,5,6,7}; 一维数组名称的用途 1,统计这个数组在内存种的长度; sizeof(arr);//sizeof()函数是统计...
1. 注释 从“#”开始,到这一行结束。 2.模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择: TEMPLATE = app A> app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。 B> lib - 建立一个库的makefile。 C> vcapp - 建立一个应用程序的VisualStudio项目文件。 D> vclib - 建立一个库的VisualStudio项目文件。 E> subdir...