自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 vector for_each

【代码】vector for_each。

2023-05-17 15:30:39 210

原创 左值引用与右值引用

【代码】左值引用与右值引用。

2023-05-16 15:16:05 172

原创 类模板实例

【代码】类模板实例。

2023-04-28 20:53:13 176

原创 函数模板实例

【代码】函数模板实例。

2023-04-28 20:40:28 103

原创 conversion function转换函数

【代码】conversion function转换函数。

2023-04-26 18:34:15 73

原创 cannot bind non-const lvalue reference of type ‘***&‘ to an rvalue of type ‘***‘解决方法

在调用拷贝函数的时候,会将(a+b)传入拷贝函数的参数,导致以临时变量的形式传入一个函数,因而报错。出现这个错误的原因是:c++不允许非常量的临时引用作为参数,因为c++认为,非常量的参数进入函数内部就是要做修改的,如果对临时引用进行修改是没有意义的。原文链接:https://blog.csdn.net/qq_33526880/article/details/116382146。同理:对于a+(b+c)的情况,也要将operator+的参数设置为const。

2023-04-25 15:44:03 4070 1

原创 对象=拷贝构造,有无指针成员的不同之处

1、当新声明一个对象并赋初始值时,使用=时,编译器会默认,将B的成员变量,拷贝赋值给B,使用的是浅拷贝,该函数自己不写到类内部时,编译器会默认隐式自带;3、假如类内部有成员是指针类型,那么编译器再使用浅拷贝,拷贝指针成员时,仅会将该指针的的值拷贝赋值给目的对象,而指针指向的空间内的数据,不会被拷贝;这个时候,编译器默认自带的拷贝赋值函数,就不能满足要求,这个时候就需要我们自己,自定义改写这个函数Add(const Add& n);调用 Add(const Add& n);总结:假设B已提前存在。

2023-04-23 21:09:33 604

原创 windows10环境下QtCreator中出现skipping incompatible xxx when searching for xxx 问题解决办法

其次如果上面的没有问题,那么再看问题skipping incompatible xxx when searching for xxx 里面的xxx.dll文件是不是64位的或32位的,必须和上面的位数一样。windows10环境下QtCreator中出现skipping incompatible xxx when searching for xxx。首先看QtCreator 和 MinGW 是不是其中一个32位 ,而另一个64位, 将两者必须统一。

2023-01-14 21:06:18 1663 1

原创 计算结构体各成员的偏移

#include <stdio.h>struct people{ int d; int f; short g;};struct student : public people{ int a; int b; int c;};int main( ){ printf("%d",(int)&((student*)0)->d) ; return 0;}

2022-01-19 18:01:09 352

原创 c++中指针转引用

#include <stdio.h>struct people{ int d; int f; short g;};//以下代码段中,参数指针student* aaa改为引用student& aaaclass student : public people{public: int a; int b; int c; int init(student& aaa); int print(student* bbb);}...

2022-01-19 16:35:54 1865

原创 结构体改类

#include <stdio.h>struct people{ int d; int f; short g;};class student : public people{public: int a; int b; int c; int init(student* aaa); int print(student* bbb);};int student :: init(student* aaa){ printf("%d\n",sizeof(s.

2022-01-19 16:10:38 753

原创 结构体继承与函数封装

#include <stdio.h>struct people{ int d; int f; short g;};struct student : people{ int a; int b; int c; int init(student* aaa); int print(student* bbb);};int student :: init(student* aaa){ printf("%d\n",sizeof(student)); aaa-&gt.

2022-01-19 15:14:51 219

原创 递归函数-汉诺塔

#include <stdio.h>int i;fun(char x,char y){ i++; printf("%c-----%c %d\n",x,y,i);}void hannuota(int num,char one,char two,char three){ if (num==1) { fun(one,three); } else { hannuota(num-1,one,three...

2022-01-17 22:35:33 224

转载 ASCII码图

ASCII首页 ASCII ASCII码相关ASCII码图

2022-01-11 11:54:06 1640

原创 数组或结构体指针++,并通过结构体指针赋值

#include <stdio.h>struct age{int a;int b;char c;int d;};int main(){age aa;age* bb;bb++;//bb是一个指针,指针的大小,是其类型减掉一个*后的类型的大小;//此处bb的类型为age* ,去掉一个*后类型为age,age是一个结构体占16个字节,所以bb++,会向下移动16个字节printf("%d\n",sizeof(*bb));return 0;}...

2022-01-06 16:12:58 656

原创 汇编,typedef 定义(WINAPI类外平栈)函数指针类型

#include <stdio.h>#include "windows.h"typedef int (__stdcall *PMessageBox)(HWND hWnd ,LPCSTR lpText,LPCSTR lpCaption,UINT uType);int main(){// PMessageBox ccc;// ccc=MessageBox;// (*ccc)(NULL,"nei rong","biao ti",MB_OK); PM...

2022-01-06 14:11:28 416

原创 汇编实现,LoadLibrary,GetProcAddress调用api函数(MessageBoxA)

#include <stdio.h>#include <WINDOWS.H>int main(){// // HMODULE hdml = LoadLibrary("user32.dll");// FARPROC proc = GetProcAddress(hdml,"MessageBoxA");// // printf("%x\n",proc);// // //MessageBoxA(NULL,"nei...

2022-01-06 11:43:59 1132

原创 LoadLibrary,GetProcAddress调用api函数(MessageBoxA)

#include <stdio.h>#include <WINDOWS.H>typedef int (WINAPI *pMessageBoxA)( HWND hWnd , LPCSTR lpText,LPCSTR lpCaption, UINT uType);int main(){ HMODULE hdml = LoadLibrary("user32.dll"); FARPROC proc = GetProcAddress(hdm...

2022-01-05 22:58:47 713

原创 typedef 定义(WINAPI类外平栈)函数指针类型

#include <stdio.h>#include "windows.h"typedef int (__stdcall *PMessageBox)(HWND hWnd ,LPCSTR lpText,LPCSTR lpCaption,UINT uType);int main(){ PMessageBox ccc; ccc=MessageBox; (*ccc)(NULL,"nei rong","biao ti",MB_OKCANCEL); retur...

2022-01-05 18:16:13 669

原创 函数指针数组

#include "stdio.h"void TheShow(){ printf("1.xiao\n");}void Zootopia(){ printf("2.feng\n");}void Inteste(){ printf("3.xing\n");}void TheLegendof(){ printf("4.hai\n");}void TheMatrix(){ printf("5.hei\n");}int main(){...

2022-01-04 18:22:24 341

原创 JCC指令

JCC指条件跳转指令,CC就是指条件码。 JCC指令 中文含义 英文原意 检查符号位 典型C应用 JZ/JE (等于则跳转)若为0则跳转;若相等则跳转 jump if zero;jump if equal ZF=1 if (i == j);if (i == 0); JNZ/JNE 若不为0则跳转;若不相等则跳转 jump if not zero;jump if not equal

2021-12-30 18:02:17 3609

原创 数组名++

int a[10];a++;//是无法通过编译的,a在运算中表示数组a的首地址,a++会给a重新赋值,导致数组首地址改变;int * pb;pb=a+1;//可以通过编译的,数组名a在运算表达式中表示首元素地址,a+1,表示a偏移一个int型长度(即4个字节);int b;a[0]++;//可以通过编译,a[0]是一个int型数据,a[0]++表示a[0]自身加1...

2021-12-29 17:44:03 3655

原创 实现strlen、strcat、strcpy、strcmp函数

一、mstrlen函数#include "stdio.h"size_t mstrlen(const char *str){ if (str == NULL) { return 0; } size_t len = 0; while (*str != '\0') { len++; str++; } return len;}int main(){ char str[1...

2021-12-29 17:43:30 145

原创 strlen、strcat、strcpy、strcmp函数

一、strlen函数#include "stdio.h"#include<string.h>int main(){ char str[20]="Hello"; size_t size=sizeof(str); printf("sizeof=%d\n",size); size_t len = strlen(str); printf("len=%d\n",len); return 0; };二、strcat函数#i...

2021-12-29 17:42:39 88

原创 C语言冒泡排序

#include "stdio.h"int fun(){ int a[10]={9,2,10,3,7,15,4,18,5,22}; int mid=0; for(int j=0;j<9;j++) { for(int i=j+1;i<9;i++) { if (a[j]>a[i]) { mid=a[j]; a[j...

2021-12-27 11:28:17 258

原创 获取当前指令地址汇编指令

获取当前指令地址汇编指令00424A35 D9EE fldz00424A37 D97424 F4 fstenv [esp-0xC]00424A3B 5B pop ebx执行后ebx的值为0x00424a35fstenv[esp-0xC] 这句执行之后会把当前堆栈的4个值改掉, 所以要提前保存堆栈的值....

2021-12-18 11:51:02 990 2

原创 内平栈、外平栈 与 寄存器传参

#include "stdio.h"int _stdcall fun1(int a,int b)//内平栈{ int c; c=a+b; return 0;}int _cdecl fun(int a,int b)//外平栈,不加关键词 “_cdecl”,默认也是外平栈{ int c; c=a+b; return 0;}int main(){ int a; a=fun(1,2); fun1(3,4); ...

2021-12-16 14:14:50 1465

原创 汇编裸函数

#include "stdio.h"_declspec(naked) int fun(){ __asm { push ebp mov ebp,esp sub esp,40h push ebx push esi push edi lea edi,[ebp-40h] mov ecx,10h ...

2021-12-15 15:32:00 388

原创 汇编指令汇总2

指令汇总 简单传送指令 mov 传送 xchg 交换 加减指令 add 简单加法 sub 简单减法 adc 带进位加法 sbb 带进位减法 inc 自增 dec 自减 neg 取反 乘除指令 mul 无符号乘法 imul 有符号乘法 div 无符号除法 idiv 有符号除法 符号扩展指令 cbw 字节扩展为字 cwd 字扩展为双字 cdq 双字扩展为四字 cwde 另一条字转换为双字

2021-12-15 14:38:38 2093

原创 汇编语言指令大全

1.MOV(传送)指令写法:MOVtarget,source功能描述:将源操作数source的值复制到target中去,source值不变注意事项:1)target不能是CS(代码段寄存器),我的理解是代码段不可写,只可读,所以相应这地方也不能对CS执行复制操作。2)target和source不能同时为内存数、段寄存器(CS\DS\ES\SS\FS\GS)3)不能将立即数传送给段寄存器4)target和source必须类型匹配,比如,要么都是字节,要么都是字或者都是双字等。4)由于立即数没...

2021-12-15 14:24:27 7325

原创 X86汇编指令

cmovc ecx,edxCF位为1,则将edx的值赋值给ecx,否则不执行任何操作cmovp ecx,edxPF位为1,则将edx的值赋值给ecx,否则不执行任何操作

2021-12-15 12:16:36 471

原创 _asm, _emit(0x50)内嵌汇编,直接插入数据

#include "stdafx.h"int main(int argc, char* argv[]){ _asm { _emit(0x50) _emit(0x51) _emit(0x52) _emit(0x53) _emit(0x54) _emit(0x55) _emit(0x56) _emit(0x57) _e...

2021-12-13 11:14:32 672

原创 利用数组越界,调用函数

#include <stdio.h>void Fun(){ while (1) { printf("编程\n"); }}int check(){ int arr[] = { 1,2,3,4,5,6,7,8 }; arr[10] = (int)&Fun; //注意: // vc6中是arr[9] = (int)&Fun; //vs2019中是arr[10] = (int)&...

2021-12-03 09:05:59 800

原创 结构体字节对齐

//结构体对齐标准大小:N=min(参数、结构体成员中最大的,比较取两者中小的)#include <stdio.h>#pragma pack(1)struct aaaaaaa{ char a; short b; short bb; __int64 c; long e; __int64 d; short dd; long f;};#pragma pack()void main(){ aaaaa...

2021-12-02 22:55:49 298

原创 逻辑左移、算术左移、逻辑右移、算术右移

汇编指令:逻辑左移:SHL算术左移:SAL逻辑右移:SHR算数右移:SARC语言中左移:a<<nC语言中右移:a>>n

2021-12-01 12:09:05 5391 1

原创 汇编 SETG,SETL ,SETGE, SETLE指令

一、SETG SETZ(SETE) //取ZF标志位值 放到寄存器里 SETNZ(SETNE) == > SETG //setg cl//ZF==0 并 SF==0 并 OF==0 时 cl=1; //> < = 二、SETL < SETL // setl cl; SF==1 或者 OF==1 时 cl=1;一、SETGE指令 指令格式 SETGE 操作数 //操作数可以是 一字节的存储单元,也可是是一字节宽度的寄存...

2021-12-01 11:12:14 6113

原创 EFLAGS(EFL)标志寄存器与JCC指令

一、CF(bit 0)[Carry Flag]:若算术操作产生的结果在最高有效位(most-significant bit)发生进位或错位则将其置为1,反之清零。 这个标志通常用来指示无符号整形运算的溢出状态。二、PF(bit 2)[Parity Flag]:如果结果的最低有效字节(least-significant byte)包含偶数个1位,则将其置为1,反之清零。 利用PF可进行奇偶校验检查三、ZF(bit 6)[Zero Flag...

2021-11-30 16:19:53 707

原创 汇编cmp比较指令详解

刚刚看到了cmp指令,一开始有点晕。后来上网找了些资料,终于看明白了,为了方便初学者,我就简单写下我的思路吧。高手绕过,谢谢! cmp(compare)指令进行比较两个操作数的大小例:cmp oprd1,oprd2 为第一个操作减去第二个操作数,但不影响第两个操作数的值,它影响flag的CF,ZF,OF,AF,PF. 我们怎么判断大小呢? 若执行指令后:...

2021-11-30 10:49:38 2752

原创 汇编的跳转指令

JE ;等于则跳转JNE ;不等于则跳转JZ ;为 0 则跳转JNZ ;不为 0 则跳转JS ;为负则跳转JNS ;不为负则跳转JC ;进位则跳转JNC ;不进位则跳转JO ;溢出则跳转JNO ;不溢出则跳转JA ;无符号大于则跳转JNA ;无符号不大于则跳转JAE ;无符号大于等于则跳转JNAE ;无符号不大于等于则跳转JG ;有符号大于则跳转JNG ;有符号不大于则跳转JGE ;有符号大于等于则跳转JNGE ;有符号不大于等于则跳转JB ;无符号小于则跳

2021-11-30 10:47:04 1131

原创 位运算之左移右移运算之详解

位运算之左移右移运算之详解先看如下一段左移右移的代码及其结果:代码#include "stdio.h"char leftshift(char i, int n){if(n < 0)return -1;return i<<n;}char rightshift(char i, int n){if(n < 0)return -1;return i>>n;}int main(){//leftshiftchar a1 =

2021-11-29 22:41:41 4087

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除