C/C++
基础、语法
weifc-wei
遇到问题,解决问题。咯卡咯伽!!!
展开
-
C/C++ ctx 是什么意思
ctx:上下文函数指针的参数, 一般是自己自定义的结构体void (*handler)(void* data);翻译 2021-03-08 08:45:25 · 2893 阅读 · 0 评论 -
C++ 如何计算十进制中某个数字的二进制的位 “1“ 的数量
如何计算十进制中某个数字的二进制的位 “1” 的数量 1 #include <iosteam> 2 3 template<class T> 4 static uint32_t CreateBytes(T value) { 5 uint32_t result = 0; 6 for (; value; ++result) { 7 value &= value - 1; 8 } 9 return翻译 2020-10-26 09:52:50 · 458 阅读 · 0 评论 -
C++ std::function
起语:版权声明:具体来源:https://www.cnblogs.com/wanghao-boke/p/12239959.htmlC++ std::functionstd::function 是一种通用、多态的函数封装,它的实例可以对任何可以调用的目标实体进行存储、复制和调用操作,它也是对 C++中现有的可调用实体的一种类型安全的包裹(相对来说,函数指针的调用不是类型安全的),简而言之,std::function 就是函数的容器。在前面的 Lambda 表达式中,我们已经介绍过使用 auto翻译 2020-09-30 19:29:59 · 113 阅读 · 0 评论 -
template<class T1, class T2>应用在哪里?
模板说明template < 类型形式参数表 >类型形式参数的形式:typename T1 , typename T2 , …… , typename Tn或 class T1 , class T2 , …… , class Tn(注:typename 和 class 的效果完全等同)类模板的全特化和偏特化#include <stdio.h>#include <iostream>template <typename T1, type原创 2020-09-29 09:48:00 · 1200 阅读 · 0 评论 -
类模板的使用 | 类模板使用总结
类模板使用总结归纳以上的介绍,可以这样声明和使用类模板:先写出一个实际的类。将此类中准备改变的类型名(如int要改变为float或char)改用一个自己指定的虚拟类型名(如上例中的T)。在类声明前面加入一行,格式为:template <typename 虚拟类型参数>如: template <typename numtype> class A {…}; //类体用类模板定义对象时用以下形式:类模板名<实际类型名> 对翻译 2020-09-27 11:43:50 · 803 阅读 · 0 评论 -
类模板的使用 | 模板类和静态成员
模板类和静态成员#include <iostream>using namespace std;template <typename T>class A {public: A(T t = 0); T& getT(); A operator+(const A& other); void print();public: static int count;private: T t;};template <typename T&翻译 2020-09-27 11:26:05 · 273 阅读 · 1 评论 -
类模板的使用 | 特殊情况友元函数
特殊情况 友元函数#include <iostream>using namespace std;template <typename T>class A {public: A(T t = 0); //声明一个友元函数, 实现对两个A类型对象进行加法操作 template <typename T> friend A<T> addA(const A<T>& a, const A<T>& b); T翻译 2020-09-27 10:48:13 · 96 阅读 · 0 评论 -
类模板函数的三种表达描述方式(具体实现)
第一种(所有的类模板函数写在类的内部)在上一篇博客所有的类模板函数写在类的外部,在一个cpp中#include <iostream>using namespace std;template <typename T>class A{public: A(T t = 0); T& getT(); A operator +(const A& other); void print();private: T t;};/*class翻译 2020-09-27 10:03:14 · 898 阅读 · 0 评论 -
C++ | 继承中类模板的使用
继承中类模板的使用继承中父子类和模板类的结合情况1.父类一般类,子类是模板类, 和普通继承的玩法类似2.子类是一般类,父类是模板类,继承时必须在子类里实例化父类的类型参数3.父类和子类都时模板类时,子类的虚拟的类型可以传递到父类中#include <iostream>using namespace std;//继承中父子类和模板类的结合情况//1.父类一般类,子类是模板类, 和普通继承的玩法类似//2.子类是一般类,父类是模板类,继承时必须在子类里实例化父类的类型参数翻译 2020-09-27 09:29:32 · 787 阅读 · 0 评论 -
C++函数模板的使用 | 为什么要有函数模板
前言C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。为什么要有函数模板项目需求: 实现多个函数用来返回两个数的最大值,要求能支持char类型、int类型、double类型变量#include <iostream>using namespace std;int Max(int a,原创 2020-09-26 23:32:01 · 447 阅读 · 0 评论 -
Linux安装boost、libevent、zlib、OpenSSL库
起语版权声明视频连接:https://www.bilibili.com/video/BV1mz411i7JW?from=search&seid=17690014621062817415百度云盘快捷链接链接:https://pan.baidu.com/s/16laNxx-xFAjczEmqoKSGyQ提取码:g4wb具体内容:= = = = = = = = > Linux安装第三方库 < = = = = = = = =百度云盘快捷链接链接:https://pan.b翻译 2020-09-23 23:59:29 · 1256 阅读 · 0 评论 -
这个符号了解一下 -> |=
|=例子代码:#include <stdio.h>#include <sys/mman.h>int main() {/* int x = 0x02; //0x2 x |= 0x01; //0x01 //0x3 等同于 0011, 按位或的结果 printf("int x = %p \n", x);*/ int flags = PROT_READ; printf("PROT_READ=%d \n",原创 2020-09-19 00:19:05 · 376 阅读 · 0 评论 -
Linux C语言 fileno(返回文件流所使用的文件描述词)
fileno(返回文件流所使用的文件描述词)相关函数open,fopen表头文件#include<stdio.h>定义函数int fileno(FILE * stream);函数说明fileno()用来取得参数 stream 指定的文件流所使用的文件描述词。返回值返回文件描述词。范例:#include <stdio.h> int main(int argc, char **argv) { FILE * fp;翻译 2020-09-16 22:32:48 · 1332 阅读 · 0 评论 -
C语言\r\n和\n区别(主要原因是系统)
起语:版权声明:来源: http://blog.sina.com.cn/s/blog_70441c8e0100uyuv.htmlC语言\r\n和\n区别\r是回车符,\n是换行符 计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束翻译 2020-09-13 23:14:07 · 766 阅读 · 0 评论 -
MySQL - C/C++访问MySQL数据库(数据库编程实战-获取关卡信息)
获取关卡信息#include <graphics.h>#include <iostream>#include <stdlib.h>#include <string>#include <conio.h>#include "box_man.h"#include "database.h"using namespace std;IMAGE images[ALL];struct _POS man; //小人在二维数组中的翻译 2020-07-16 16:51:35 · 221 阅读 · 4 评论 -
C/C++ _补充 - 推箱子游戏
补充项目 - 推箱子游戏第 1 节 项目需求实现一款推箱子游戏,效果如下图所示,具体规则: 1. 箱子只能推动而不能拉动; 2.如果箱子前一格是地板或箱子目的地,则可以推动一个箱子往前走一格,如果箱子已经在 箱子目的地则不能再推动; 3.推箱子的小人不能从箱子目的地上直接穿过; 4.注意不要把箱子推到死角上,不然就无法再推动它了; 5.所有箱子都成功推到箱子目的地,游戏结束,过关成功!美工资源:链接:https://pan.baidu.com/s/1MZv8pDBXdNDbXxuAAPSM-A *翻译 2020-07-15 23:52:45 · 520 阅读 · 0 评论 -
C/C++_统计字母个数
参考:#include <stdio.h>#include <string.h>#include <stdlib.h>#define NUM 26 /* 一共有26个字母大或小 */int main(){ int i = 1; int a[NUM] = { 0 }; int A[NUM] = { 0 }; char str[] = "ddfdfdfadfasdg"; for (i = 0; i < strlen(str); i++)翻译 2020-05-18 11:16:10 · 3706 阅读 · 1 评论 -
C++_STL_函数模板和普通函数重载区别结论
函数模板和函数重载你可以屏蔽第2个Swap()函数, 进行测试demo.cpp#include <iostream>using namespace std;template <typename T>void Swap(T& a, T& b){ T t; t = a; a = b; b = t; cout << "Swap 模板函数被调用了" << endl;}void Swap(char& a, int原创 2020-05-09 08:21:01 · 275 阅读 · 0 评论 -
C++_STL函数模板和普通函数在一起,调用规则???
函数模板和普通函数在一起,调用规则1 函数模板可以像普通函数一样被重载2 C++ 编译器优先考虑普通函数3 如果函数模板可以产生一个更好的匹配, 那么选择模板4 可以通过空模板实参列表的语法限定编译器只能通过模板匹配demo.cpp#include <iostream>using namespace std;/* 第一版 */int Max1(int a, int b){ cout << "调用 int Max1(int a, int b)" <<原创 2020-05-09 08:20:09 · 174 阅读 · 0 评论 -
参数里又有指针的又有引用的__花里胡哨有用???of course
又有的指针又有引用的???好绕啊其实这和我已经写的博客已经有答案,请look lookhttps://blog.csdn.net/m0_45867846/article/details/105934997是不是很简单demo.c#include <stdlib.h>#include <stdio.h>void boy_home1(int** meipo)...原创 2020-05-07 13:36:31 · 135 阅读 · 0 评论 -
C/C++_void 类型指针_用的情景比较多, 你必须懂!!!
void => 空类型void* => 空类型指针, 只存储地址的值, 丢失类型, 无法访问, 要访问其值,我们必须对这个指针做出正确的前置类型转换, 然后再间接引用指针.所有其他类型的指针都可以隐式自动转换成 void 类型指针, 反之需要强置转换参考:#include <stdio.h>#include <stdlib.h>int main()...原创 2020-05-05 21:41:21 · 186 阅读 · 0 评论 -
如何在二维数组中, 分别找出最大的数&&次大的数
这里我用指针数组指针数组的定义: 类型 *指针数组名[元素个数];参考:#include <stdio.h>#include <stdlib.h>int main(){ int girls[4][3] = { {173,158,166}, {168,155,171}, {163,164,165}, {163,164,172} }; in...原创 2020-05-05 20:27:52 · 675 阅读 · 0 评论 -
二级指针真的只是"花里胡哨"???_二级指针的用途
二级指针的用途普通指针可以将变量通过参数"带入"函数内部, 但是没法将内部变量"带出函数"二级指针不但可以将变量通过参数"带入"函数内部, 也可以将函数内部变量"带出"到函数外部.参考:#include <stdio.h>#include <stdlib.h>void swap(int* a, int* b){ int tmp = *a; *...原创 2020-05-05 16:54:20 · 211 阅读 · 0 评论 -
C/C++_二维数组的小练习_判断峰值
二维数组的小练习_判断峰值为了描述峰点的位置,我们需要使用一个位置方案:使用二维数组描述 假定左上角是[0][0],那么向下移动,则行号加 1;向右移动,则列号加 1, 那么这些峰点的位置就可以描述为:[2][1] [2][5] [4][3]。圆形: 要判断的峰值.X: 要对比的位置.位置确定后,与周围 4 个邻节点比较即可确定峰点!(注:网格边界点缺乏 4 个相邻点不计算峰点)数据保...原创 2020-05-05 16:29:23 · 819 阅读 · 0 评论 -
如果二维数组作为函数的参数会怎样???
二维数组作为函数的参数二维数组作为函数的参数传递, 不是单纯的值传递, 传递的是数组本身.demo.c#include <stdlib.h>#include <stdio.h>/* 版本1 指明参数 */void print1(int a[3][4]){ for (int i = 0; i < 3; i++) { for (int j = 0;...翻译 2020-05-05 15:41:40 · 575 阅读 · 1 评论 -
C++_面向对象编程_练习(仅仅适合小白写写, 有兴趣可以写写)
某无线通信设备ODU设备, 具有以下功能:查看发射功率, 设置发射功率.查看发射频率, 设置发射频率.查看带宽, 修改带宽.查看设备概述(个指标的值).后来对该产品做了升级, 研发成了ODU330产品:这个产品, 新增加了以下功能:查看当前的误码率.查看误码率告警门限设置误码率告警门限参考:OUD.h#pragma once#include <strin...翻译 2020-05-03 13:17:42 · 307 阅读 · 0 评论 -
C++_子类型到底有啥子用???
子类型的作用在需要父类对象的任何地方, 可以使用"共有派生(public)"的子类型的对象来替代, 从而可以使用相同的函数统一处理基类对象.即: 形参为基类对象时, 实参可以是派生类对象.参考:#include <iostream>#include <sstream>using namespace std;class Father{public: v...原创 2020-05-02 16:15:22 · 384 阅读 · 0 评论 -
C++_什么是子类型, 你还记得吗?
什么是子类型公有继承(public)时, 派生类的对象可以作为基类的对象处理, 派生类是基类的子类型.B类就是A类的子类型.参考:#include <iostream>using namespace std;class A{public: A(){} ~A(){} void kill() { cout << "A kill." <<...原创 2020-05-02 15:38:01 · 2503 阅读 · 0 评论 -
C++_子类的析构函数
子类的析构函数子类的析构函数的调用顺序,和子类的构造函数的调用顺序相反!!!记住,相反即可。#include <iostream>#include <Windows.h>using namespace std;class M{public: M() { cout << __FUNCTION__ << endl; } ...原创 2020-05-02 15:06:54 · 1331 阅读 · 0 评论 -
C++_子类和父类的构造函数的调用顺序
子类和父类的构造函数的调用顺序当创建子类对象时, 构造函数的调用顺序:静态数据成员的构造函数 -> 父类的构造函数 -> 非静态的数据成员的构造函数 -> 自己的构造函数注意:无论创建几个对象, 该类的静态成员只构建一次, 所以静态成员的构造函数只调用1次!!!#include <iostream>#include <Windows.h>...原创 2020-05-02 14:47:25 · 3235 阅读 · 0 评论 -
为什么要使用指针, 你还记得吗?
**为什么要使用指针**函数的值传递,无法通过调用函数,来修改函数的实参被调用函数需要提供更多的“返回值”给调用函数减少值传递时带来的额外开销,提高代码执行效率/****************************************** >为什么要使用指针* >函数的值传递, 无法通过调用函数, 来修改函数的实参* >被调用函数需要提供更多的"返回...原创 2020-04-25 09:04:17 · 337 阅读 · 0 评论 -
复习_回顾_类型定义typedef(详解)_与_#define_区别可大
类型定义1.1 什么是类型定义typedef 是一个高级数据特性,它可以为某一类型自定义名称, 即类型的别名。1.2 为什么要使用类型定义从一辆豪车说起: 奇瑞捷豹路虎揽胜极光简化写法提高程序的可移植性linux 系统#include <stdio.h>#include <stdlib.h>typedef long int64;int mai...原创 2020-04-19 10:01:41 · 164 阅读 · 0 评论 -
复习_回顾_总结_宏_#define(详解)
宏为什么要使用宏1)提高代码的可读性和可维护性2) 避免函数调用,提高程序效率什么是宏它是一种预处理器指令,在预编译阶段将宏名替换为后面的替换体 。宏的定义由三部分组成 #define WIDTH 960预处理指令 宏名 替换体(多行可用 \ 延续)#include <stdio.h>#include <stdlib.h>#def...原创 2020-04-19 08:48:37 · 142 阅读 · 0 评论 -
复习_回顾_总结_struct_结构体(详解)
结构体1.1 为什么要使用“结构”(结构体)但需要表示一些复杂信息时,使用单纯的数据类型很不方便。比如:学生信息(学号,姓名,班级,电话,年龄)1.2 什么是“结构”结构,就是程序员自定义的一种“数据类型”是使用多个基本数据类型、或者其他结构,组合而成的一种新的“数据类型”。1.3 结构体的定义struct 结构名 {成员类型 成员名;成员类型 成员名;};实例:st...原创 2020-04-19 08:47:05 · 284 阅读 · 0 评论 -
复习_回顾_总结所学_enum_枚举(详解)
枚举1.1 枚举的概念枚举是 C/C++语言中的一种基本数据类型,它可以用于声明一组常数。当一个变量有几个固 定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有 4 种可能的取值:春天、夏 天、秋天、冬天。1.2 枚举类型的定义一般形式为:enum 枚举名 {枚举元素 1,枚举元素 2,……};enum Season {spring,...原创 2020-04-19 08:45:03 · 215 阅读 · 0 评论 -
特殊的“别名”:引用_&(详解)
特殊的“别名”:引用引用专题变量名回顾变量名实质上是一段连续存储空间的别名,是一个标号(门牌号)程序中通过变量来申请并命名内存空间通过变量的名字可以使用存储空间问题 1:对一段连续的内存空间只能取一个别名吗?1 引用概念a) 在C++中新增加了引用的概念b) 引用可以看作一个***已定义变量***的别名c) 引用的语法:Type& name = var;d) 引用...原创 2020-04-18 15:01:52 · 986 阅读 · 0 评论 -
复习_回顾所学的_C/C++_new_内存使用(详解)
1. C++程序的内存分区1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。2、堆区(heap):一般由程序员分配释放,随叫随到,挥之即走。3、全局/静态区(static):全局变量和静态变量的存储是放在一起的,在程序编译时分配。4、文字常量区:存放常量字符串。5、程序代码区:存放函数体(包括类的成员函数、全局函数)的二进制代码#include &l...原创 2020-04-18 14:59:17 · 294 阅读 · 0 评论 -
复习总结: void 类型指针 _ 函数指针
void 类型指针void => 空类型void* => 空类型指针,只存储地址的值,丢失类型,无法访问,要访问其值,我们必须对这个指 针做出正确的类型转换,然后再间接引用指针。所有其它类型的指针都可以隐式自动转换成 void 类型指针,反之需要强制转换#include <stdio.h>#include <stdlib.h>int main(...原创 2020-04-17 11:04:05 · 680 阅读 · 1 评论 -
指针和数组的纠缠
指针和数组的纠缠指针表示法和数组表示法数组完全可以使用指针来访问, days[3] 和 *(days+3) 等同原创 2020-04-17 11:01:47 · 121 阅读 · 0 评论 -
复习总结一下: 指针的内容
为什么要使用指针 函数的值传递,无法通过调用函数,来修改函数的实参 被调用函数需要提供更多的“返回值”给调用函数 减少值传递时带来的额外开销,提高代码执行效率指针的初始化、访问指针的初始化#include <stdio.h>#include <stdlib.h>int main() { int room = 2; int *p1 = &...原创 2020-04-16 15:12:05 · 217 阅读 · 0 评论