计算机编程知识
以编程基础知识为主
设计C 和C++为主;语法、特性、基础知识
Hi,洋洋洒洒
这个作者很懒,什么都没留下…
展开
-
传输协议上的字节解析问题
1、 低字节在前,高字节在后2、0x01高字节 , 0x00 低字节,如何组合成一个字节3、0x01 = 0000 0000 0000 00014、0x00 = 0000 0000 0000 00005、按照组合规则,低字节在前,高字节在后组合成的新数据6、0x01 + 0x00 = 0x0001...原创 2021-07-18 21:48:20 · 1071 阅读 · 0 评论 -
C++函数返回引用的含义
引用的意思就是说返回变量的地址而非变量本身。这样子函double数结束之后存储返回值的内存单元不会被销毁,保留了它的地址。例如下面这个例子:int a=1,b;b=a;b++;这个例子里执行完之后a为1,而b为2。但这个例子:int a=1;int *b;b=&a;//指针b获取了a的地址(*b)++;a和b的值都会变为2...原创 2020-09-17 23:49:49 · 680 阅读 · 0 评论 -
stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。
$ make > compile.log 2>&1首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 compile.log 这个文件中。这样我们就可以将所有的输出都存储到文件中了。原创 2020-08-27 16:10:17 · 883 阅读 · 0 评论 -
CmakeLists关于指定路径加载Opencv版本
file(GLOBAL "/home/Gthrid/opencv/"原创 2020-08-23 21:17:23 · 744 阅读 · 1 评论 -
Cmakelists一版教程
cmake_minimum_required(VERSION 3.00)project(just_test)set(CMAKE_CXX_STANDARD 11 )# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread" )set(SOURCE_FILES main.cpp)SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -g -Wall")# OpenMPFIND_PACKA.原创 2020-08-11 18:56:00 · 287 阅读 · 0 评论 -
使用宏的可变参数来构造打印Log宏
#define Test_Debug#ifdef Test_Debug #define DBG_ERR(fmt,args) printf(fmt,__FILE__,__FUNCTION__,__LINE__,##args)#endifvoid printf_erro(int a,int b){ if (a < b) { //DBG_ERR("%d\n",888); //printf("%s %s %d %d\n", __FILE__...原创 2020-05-17 22:38:52 · 205 阅读 · 0 评论 -
在c++代码中关闭和启动另外一个pid进程号,共享内存数据使用
1、pid = getPidFromName(of_program_name);if (pid > 0) { ERROR("opticflow process still exispid = %d\n", pid); if (kill(pid, SIGKILL)) //杀死进程 { fprintf(stderr, "kill(SIGKILL...原创 2020-05-12 18:51:14 · 690 阅读 · 0 评论 -
总结从linux -> windows 上(GCC与MSVC 2015) 移植C或者C++代码时候遇到的编译和链接问题
解决办法和修改办法的总体思想1、在代码的语义和功能不变的情况下,进行c->c++的转变,消除编译器的跨平台编译报错问题;2、遇到编译问题,先看编译器提示信息,然后逐个排查和定位,去解决问题。1、当遇到c中的代码,数组使用动态变量初始化在GCC能编译通过,在MSVC上编译不过的时候解决办法例如:原版C:void func1(int number){...原创 2020-04-21 19:02:19 · 834 阅读 · 0 评论 -
linux 下的gettimeofday 函数在windows上的替换方案
方案一:#include <time.h>#ifdef WIN32# include <windows.h>#else# include <sys/time.h>#endif#ifdef WIN32intgettimeofday(struct timeval *tp, void *tzp){ time_t clock; ...原创 2020-04-21 17:20:30 · 1235 阅读 · 1 评论 -
C++ vector.insert的用法
insert()函数有以下三种用法:在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,在指定位置loc前插入num个值为val的元素在指定位置loc前插入区间[start,end)的所有元素.,查看源码返回元素的大小个数原函数 iterator insert(const_iterator _Where, const _Ty& _Val)...原创 2020-03-27 13:30:13 · 3335 阅读 · 0 评论 -
Visual Studio 快捷键使用方法
1、Ctrl + k 和 Ctrl +F 一起使用可以格式化代码,让其对齐工整。原创 2020-03-21 12:00:33 · 124 阅读 · 0 评论 -
constexpr的好处
constexpr的好处:是一种很强的约束,更好地保证程序的正确语义不被破坏。 编译器可以在编译期对constexpr的代码进行非常大的优化,比如将用到的constexpr表达式都直接替换成最终结果等。 相比宏来说,没有额外的开销,但更安全可靠。...原创 2020-03-01 13:06:44 · 1141 阅读 · 0 评论 -
C++:getenv & setenv -- 获取&设置系统环境变量
C++:getenv & setenv -- 获取&设置系统环境变量1. getenv:取得环境变量内容头文件- #include<stdlib.h>格式: char * getenv(const char *name);意义: getenv()用来取得参数name环境变量的内容。@param name为环境变量的名称,如果该变量存在则会返回指向该内容的指针...原创 2020-02-29 23:16:13 · 2015 阅读 · 0 评论 -
windows上使用cmake 编译yaml-cpp源码,生成yam-cpp.lib
1、打开cmake-gui2、添加CmakeList3、建立build4、进入工程中生成debug和release版本的lib原创 2020-02-27 10:21:55 · 1650 阅读 · 1 评论 -
Segmentation fault (core dumped) -llinux系统内存错误报错信息
目录1 问题原因 (1)内存访问越界 (2)多线程程序使用了线程不安全的函数。 (3)多线程读写的数据未加锁保护。 (5)堆栈溢出。 2 使用GDB查看core文件 3 使用GDB调试程序返回目录1 问题原因Segmentation fault (core dumped)多为内存不当操作造成。空指针、野指针的读写操作,数组越界访问,破坏常量等。对每个指针声明后...转载 2020-02-18 10:35:40 · 432 阅读 · 0 评论 -
extern 全局变量在不同的文件使用方法(static)
例如:1.cint k=6;想要在2.c中调用1.c的k则在2.c中用extern k 声明一下就可以使用了;int c=3;c=k;但是如果1.c中是这样定义的static int k=6;想要在2.c中使用k时不允许的,static只能在本文件中使用,外部文件不允许使用...原创 2020-02-13 22:50:27 · 916 阅读 · 0 评论 -
以后遇见 visual studio的调试bug出错,直接查询错误代码;高效解决调试问题
1、例如遇到:严重性 代码 说明 项目 文件 行错误 LNK2005 "void __cdecl readFileList(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class s...原创 2020-01-20 11:30:38 · 676 阅读 · 0 评论 -
c和c++的结构体使用
一:结构体其实有两种初始化方式1、直接把多有的变量在其内部通过形参传入到结构体中,结构体定义在程序的最开头是个全局变量;这个时候参数已经传入进来,在本文件中都可以直接使用该结构体的所有成员变量2、先定义,想要使用其中的某个变量的时候,就在程序中给与赋值,然后该结构体的某个变量就拥有了初始值;可以再本文件中的任何一个位置使用结构体中的变量。...原创 2020-01-13 10:32:16 · 162 阅读 · 0 评论 -
system的相关用法
system()—执行shell命令也就是向dos发送一条指令。相关函数:fork, execve, waitpid, popen头文件:#include <stdlib.h>定义函数:int system(const char * string);system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用colo...原创 2020-01-07 16:51:27 · 340 阅读 · 0 评论 -
atoi(),函数,将字符串转为整形数字
C 库函数int atoi(const char *str)把参数str所指向的字符串转换为一个整数(类型为 int 型)。测试用例:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int val; char str[20]; ...原创 2020-01-06 17:11:07 · 477 阅读 · 0 评论 -
VScode 快速更改编码格式
1、view下的 Cmmand Palette 下的Change file Encoding simplifiled chinese GB2312原创 2019-11-12 21:54:02 · 8292 阅读 · 0 评论 -
指针作为函数参数引用数组的任意元素
void swap(int *a,int*b){ *a=*a^*b; *b=*a^*b; *a=*a^*b;}swap(data[j],data[j+1]);int data[10]={13,55,48,13,62,45,754,0,10};以上是我遇到的问题,我觉得调用这个swap函数是不能这样直接把数组的某个元素直接丢给swap数据在程序中参加数据处理的量不是指针本身的...原创 2018-07-02 12:32:10 · 1225 阅读 · 0 评论 -
重新认知指针
1、把指针指向的变量的数据类型称为指针的数据类型;而任何一个指针变量本身数据值的类型都是unsigned long int2.、指针变量名前的符号“*”表示的是指向运算。3、不要认为“ *p" 是指针变量,指针变量是p而不是*p4、...原创 2018-07-02 11:15:50 · 115 阅读 · 0 评论 -
二叉查找树的先序遍历,中序遍历,后序遍历
1、有一个二叉查找树,存储者字符'A','B','C','D','E','F','G','H',下面哪个结果是后序树遍历结果A. ADBCEGFHB. BCAGEHFDC. BCAEFDHGD. BDACEFHG我的结题思路是将每个答案按照后序的遍历方法把二叉树存储数据的结构还原,看是否满足二叉树的性质。二叉树的性质:1、左子树的值小于根节点,右子树的值大于根节点我们直接看C答案:...原创 2018-07-02 11:04:51 · 1821 阅读 · 0 评论 -
将数组作为参数,调用该函数时候给的是数组地址还是整个数组
1、在实际的应用中,数组经常作为函数参数,将数组中的数据传递到另外一个函数中,一般来说,传递可以采用两种方法:1>、数组元素作为函数的实参时,用法跟普通变量作参数相同,将数组元素的值传递给形参时进行函数体调用,函数调用完返回后,数组元素的值不变。这种传递方式是”值传递“方式,即只能从实参传递给形参,而不能从形参传递给实参。2>、数组名作为函数的参数,当用数组名作为函数的实参和形参时,传...原创 2018-07-02 11:15:04 · 21571 阅读 · 0 评论 -
关于for循环中的变量int i 如果跳出了这个for循环后,i的值是继续保留还是被释放掉了
#include<iostream>using namespace std; int main(){ char a[10]; //定义一个一维数组用来存放字符串 int i,j; //定义变量 cout<<"请输入字符:“; for(i=0;i<10;i++) ...原创 2018-06-26 20:23:10 · 15658 阅读 · 2 评论 -
c++存储类型
1、c++中的存储类型一般有静态存储、栈、和自动类型三种,一般默认值是为自动类型auto原创 2018-06-26 19:46:49 · 930 阅读 · 0 评论 -
数组指针与指针数组的区别
1、数组指针定义:数组指针式一个指向一维数组的指针变量,定义数组指针的格式为:int (*p) [5] 数据类型 (*指针名) [常量表达式]数组元素为整形,*p的两侧圆括号不能省略2、指针数组定义:指针数组就是其元素为指针的数组,它是指针的集合,它的每一个元素都是指针变量,并且它们具有相同的存储类型和指向相同的数据类型数据类型 *指针数组名 [常量表达式]static char *...原创 2018-06-26 19:44:23 · 151 阅读 · 0 评论 -
数组的最后一位的下一位为什么是0?
以下是我做的两个实验,加证实了数组的最后一位的后一位是0,只应该是系统自动添加的标志位1、比如int a[5]则a[5]=0,这个是什么原因我还没有搞懂#include<iostream>using namespace std;int main(){ int a[5]; int *p=a; for(int i=0;i<5;i++) { a[i]=i; cout<<"...原创 2018-07-11 12:23:23 · 3617 阅读 · 0 评论 -
for(;;)函数中判断条件执行顺序
for(i=100;i>=0;--i){ cout<<"i="<<i<<endl; }它的执行过程如下:1) 先求解表达式1。2) 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。3) 求解表达式...原创 2018-07-18 16:16:29 · 3413 阅读 · 0 评论 -
c++中指针箭头的用法
1、c++中指针用箭头来引用类或者结构体的成员,箭头操作符“->”用来引用指针对象。这是是用于类,或者是结构体的指针变量用的。 如struct Point {int x,y;};Point *pt=new Point;pt->x=1;举例子说明一下:比如,我有一个对象darkray。那么我可以通过”.”来调用darkray类中中的成员变量。但是如果darkray是指针的话,就不能通过”...原创 2018-07-06 10:24:30 · 16879 阅读 · 3 评论 -
windows下的结束标志
空格 ctrl+z ctrl+z 回车 int main(){ stack<string> ss; //std::vector<int> ss; string str; cout<<"请输入字符串"<<endl; while(cin>>str) { ss.pus...原创 2018-07-18 21:31:01 · 553 阅读 · 0 评论 -
void test ( base &rBase) 里面的 参数是什么意思?
#include"iostream.h"class base{public: virtual ~base() {} virtual void func() { cout<<"base output!"<<endl; }};class derived1:public base{public: void func() {cout<...原创 2018-07-06 21:49:31 · 1391 阅读 · 0 评论 -
C++中的sort()函数的原形
1、sor(a,a+n,compare){ //前两个是参数是待排序的数组首地址和尾地址//最后一个参数是compare表示的比较类型//可调用functional函数的less()和greater()函数比较大小}...原创 2018-07-16 09:59:33 · 2753 阅读 · 0 评论 -
windows系统中创建线程常用哪几个函数,有什么区别?
windows系统中创建线程常用哪几个函数?在windows系统中创建线程的函数有:CreadThread,AfxBeginThread,_beginthread,_beginthreadex。他们的区别在于使用的场景不同。CreateThread是Windows的API函数(SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用),提供操作系统级别的创建线程的操...原创 2019-07-27 11:16:55 · 662 阅读 · 0 评论 -
C++基础知识
1、memest()函数的用法:memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度....原创 2019-08-29 16:07:01 · 147 阅读 · 0 评论 -
C++中两个数交换不引进中间变量的方法
int a=8,b=2;二进制的a=1000,b=0010;aa方法一:使用异或思想(最高级方法)a=a^b;b=a^b;a=a^b方法二:使用加法加法(高级方法)a=a+b;b=a-b;a=a-b;方法三:引进中间变量(一般方法)int temp=a;a=b;b=temp;...原创 2018-06-26 15:15:33 · 282 阅读 · 0 评论