c/c++ 基础
文章平均质量分 65
通信仿真爱好者
phd在读,爱好通信领域相关仿真,包括调制解调,OFDM,MMIMO,信道编码(ldpc,polar,卷积)等,也擅长可见光(VLC),多址接入(NOMA,RSMA),无人机(UAV),智能反射面(RIS)等通信优化问题相关的资源分配算法,如sca,拉格朗日等,也擅长使用强化学习解决通信相关问题。所展示的仿真图均有完整代码一键运行出图
展开
-
#ifndef, #define, #endif 理解
使用#ifndef可以避免下面这种错误如果在h文件中定义了全局变量,一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;而在c++语言中,#ifdef的作用域只是在单个文件中。所以如果h文件里定义了全局变量,即使采用#ifdef宏定义,多个c文件包含同一个h文件还是会出现全局变量重定义的错误。在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用#ifndef宏定义,多个c文件包含同一个h文件也不会报错。...转载 2022-07-19 09:45:06 · 760 阅读 · 0 评论 -
secure crt上传文件至腾讯云linux
使用secureCRT远程访问腾讯云服务器SecureCRT 上传文件原创 2021-08-30 16:32:15 · 130 阅读 · 0 评论 -
基于c++的数据库连接池 的实现与理解
文章目录前言:1.项目目的前言:为了加深对c++多线程和mysql的理解,为了做了这个小型项目。代码参考了github上和CSDN及B站上很多人的讲解。做完之后发现这个项目“麻雀虽小五脏俱全”,特此记录下自己的理解和编程过程。1.项目目的在高并发的情况避免频繁的向数据库申请资源,释放资源带来性能损耗。...原创 2021-07-24 13:42:55 · 1469 阅读 · 9 评论 -
c++ 多线程编程总结
前言:并发:两个或者多个任务同时进行。对于单核cpu而言,并发是假象,实际上在某一时刻只能执行一个任务,由操作系统调度。每秒进行多次的任务切换,即:上下文切换,需要时间开销–因为操作系统需要保存切换时的各种状态,执行的进度等等信息,切换回来之后需要恢复。多余多核cpu,能够真正同时执行多个任务,即硬件上的并发。进程:一个可执行程序运行起来后,产生了一个进程。线程:理解为一条代码的执行道路,可以有多条。线程并不是越多越好,每个线程都需要一个独立的堆栈空间(1M),且线程切换耗时。并发的实现方式:原创 2021-07-23 15:14:50 · 790 阅读 · 0 评论 -
右值引用与移动语义
右值引用与移动语义刚开始看这个左值的概念,有点绕。先提概念,左值是表达式结束后仍然存在的值,右值是值表达式结束后就不在存在的临时值。例如下面代码int a = fun();会产生两种类型的值,一类是左值 a,另一类是右值,即fun() 函数返回的一个临时值。如定义那样,这个临时值再赋给a,在表达式结束后被销毁。再看下面代码int &&a = fun();这里对fun() 的返回值,即右值绑定了一个右值引用,那么fun()产生的临时值在表达式结束后不会被销毁了,重获新生,生命原创 2021-05-24 14:53:29 · 520 阅读 · 1 评论 -
c++ 拷贝构造函数学习
拷贝构造函数关于拷贝构造函数,初学的我第一印象是在用一个对象去初始化另一个对象时,会调用拷贝构造函数。其实,以下三种情况,拷贝构造函数会被调用1)用类的对象去初始化另一个对象时;2)函数的形参是类的对象,在调用函数时 进行形参和实参的结合;3)函数的返回值是类的对象时,在函数执行完返回调用者时。对于第一点,很好理解,这里不赘述;对第二点,回顾函数的调用方式 出现在函数定义中的参数称为形参,出现在函数调用中的参数为形参。形参在函数定义时,编译器并不为其分配存储空间,只有在函数调用时,临时为形参分配原创 2021-05-23 21:26:15 · 247 阅读 · 5 评论 -
c++多态学习小记
联编多态的引入多态的实现1.函数重载--静态联编2 虚函数-动态联编虚函数的实现方法:基类的构造函数不允许定义为虚函数析构函数一般定义为虚函数联编首先先了解啥是联编,先看书上的概念联编: 是指确定函数调用和函数代码段之间的映射关系。静态联编:是只在编译时确定了函数调用的具体操作对象;动态联编:是只在程序运行过程中动态确定函数调用的具体对象。换句话说联编就是找到应该调用哪个函数的过程;看个例子#include <iostream>using namespace std;.原创 2021-05-22 22:18:09 · 320 阅读 · 0 评论 -
不使用临时变量交换两个数
这题属于c语言基础知识在交换两个变量a和b的值时,我们一般使用第三个临时变量c作为中间变量。即:c=a;a=b;b=c;不使用临时变量我们可以有下列两种思路1.利用 a = b + (a-b)先用a的新值保存b的旧值的相关信息,即a=a-b再利用a的新值去更新b的旧值,即b=b-a;接着利用a和b的新值和去更新a,即a=b-a;a=a-b;b=b+a;a = b-a;2.利用异或运算中的一个经典结论 b= a ^b ^a;思路同上a=a ^b;b = a^b;a =原创 2021-04-06 19:21:12 · 760 阅读 · 0 评论 -
c++ 内存对齐问题
内存对齐的含义:1.在处理结构体内的成员时,每个成员在内存中的起始地址必须是成员类型所占字节数的整数倍。2.另外,还有一条重要规则,sizeof计算结果必须是结构体中占用内存最大变量的内存的整数倍。3.最后,注意在数据内存对齐,要以结构体中最深层的基本数据类型为准。关于sizeof计算结构体占用的内存问题,看三个例子:目的是为了方便加快数据的读取速度,减少指令周期等。struct s1{ char a; short b; int c; double d;};//sizeof(s1)原创 2021-04-06 18:24:23 · 164 阅读 · 0 评论 -
STL_heap简单用法小记
1.头文件#include <algorithm> STL在algorithm.h 文件中实现了 对存储在数组或者vector中的元素进行相关堆化的 函数,包括 : make_heap, pop_heap, push_heap, sort_heap。可以看出,heap实现有两层,底层是数组或者vector,上层是heap。2.heap相关的四个函数make_heap( ):建立堆(要么大顶堆,要么小顶堆)push_heap( ): 在堆中添加元素pop_heap( ): 在堆中删原创 2020-11-13 15:44:21 · 203 阅读 · 0 评论 -
重学c语言之查漏补缺一 数据类型
学习编程的过程中深感基础的重要性,为此重新梳理一遍c语言的基础,查漏补缺。1.数据类型数据类型决定了数据的取值范围,存储空间大小以及运算的方式。在我们声明一个变量时,前面一般需要带上数据类型。在初次学习时,我只能理解基本类型的使用与意义,而现阶段需注意其它数据类型的使用方式,换句话说,除了常见的基本数据类型变量的声明,也要习惯常见的构造类型以及指针类型变量的声明。如下图:关于数据类型:1.1charc语言中基本数据类型中只有字符型(char),描述的是单个字符(一个字节),一个中文符号占两个原创 2020-07-30 15:57:34 · 413 阅读 · 0 评论