C++语法
qq_857305819
这个作者很懒,什么都没留下…
展开
-
symbol type viewer 将PDB转换为C头文件
一定要有VPN原创 2021-07-01 19:43:07 · 491 阅读 · 0 评论 -
删除目录下的特定文件
#include"stdafx.h"#include<windows.h>#include<regex>#include<iostream>#include "stdio.h" using namespace std;char* wideCharToMultiByte(wchar_t* pWCStrKey){ //第一次调用确认转换后单字节字符串的长度,用于开辟空间 int pSize = WideCharToMultiByte(CP_OEMCP,原创 2021-06-19 11:39:48 · 199 阅读 · 0 评论 -
c++ 11 有用的特性
auto自动类型推导#include"stdafx.h"#include<map>#include<iostream>using namespace std;int main(int argc, char* argv[]){ //STL中的map是采用二叉树实现的 map<char, string>mymap; //添加元素 mymap['a'] = "linying"; mymap['b'] = "linyu"; mymap['c']原创 2021-06-16 11:33:36 · 96 阅读 · 0 评论 -
STL map
#include"stdafx.h"#include<map>#include<iostream>using namespace std;int main(int argc, char* argv[]){ //STL中的map是采用二叉树实现的 map<char, string>mymap; //添加元素 mymap['a'] = "linying"; mymap['b'] = "linyu"; mymap['c'] = "dale原创 2021-06-16 08:45:06 · 106 阅读 · 0 评论 -
CMap类的使用
#include"stdafx.h"#include<afxtempl.h>#include<iostream>#include<algorithm>using namespace std;typedef struct{ int number; bool sex; char name[260];}Student;CMap <int, int ,Student, Student>map;int main(int argc, char*原创 2021-06-15 17:59:12 · 308 阅读 · 0 评论 -
STL vector的使用
#include"stdafx.h"#include<vector>#include<iostream>#include<algorithm> //算法头文件using namespace std;//容器 也就是动态数组vector <int> v;void Print(){ //遍历动态数组 for (unsigned int i = 0; i < v.size(); i++) { cout << v[i]原创 2021-06-15 16:54:53 · 92 阅读 · 0 评论 -
CArry的使用
#include"stdafx.h"#include<afxtempl.h>#include<iostream>using namespace std;int main(int argc, char* argv[]){ //Array elements type is integer CArray<int> arr; //add elements arr.Add(5); arr.Add(3); arr.Add(9); arr.Add(原创 2021-06-15 15:47:06 · 233 阅读 · 0 评论 -
c++ STL模板库 list的使用
#include"stdafx.h"#include<list>#include<iostream>using namespace std;typedef struct { int number; bool sex; char name[20];}Student;list <Student> cl; //链表中的元素为 STUDENT结构类型list <Student>::iterator cl_Iter; //原创 2021-06-15 12:54:46 · 126 阅读 · 0 评论 -
MFC CList的使用方法
#include"stdafx.h"#include<afxtempl.h>#include<iostream>using namespace std;//申明一个名为list的双向链表,里面存放的数据位int类型CList <int> list;VOID PrintData(){ //获取头结点 POSITION Head = list.GetHeadPosition(); //遍历所有结点 while (Head) { //获取链表原创 2021-06-15 10:34:46 · 721 阅读 · 0 评论 -
IAT hook
#include"stdafx.h"#include <windows.h>VOID __stdcall mySleep(DWORD m){ MessageBoxA(0, "Hook 成功", "IAT hook", MB_OK);}PVOID EnumAPI(){ PBYTE ImageBase; PIMAGE_THUNK_DATA r; PIMAGE_NT_HEADERS pNtHeader; PIMAGE_IMPORT_DESCRIPTOR pImport; //原创 2021-06-12 20:22:28 · 134 阅读 · 0 评论 -
MFC中取出编辑框字符串转换成16进制
DWORD CTOD(CString m_Send){ char *stops, s[3] = {0}; unsigned char d[10] = {0}; DWORD realLen = m_Send.GetLength(); DWORD len = m_Send.GetLength() / 2 + m_Send.GetLength() %2; bool bFlag = FALSE; if (m_Send.GetLength() % 2 == 1) { bFlag = TRUE;原创 2020-12-12 14:24:41 · 1808 阅读 · 2 评论 -
汇编除法指令
32位汇编除法指令:.divdiv oprd如果oprd是32位则edx含有被除数高32位,eax含有被除数低32位结果的商送到eax,结果的余数送到edx中原创 2020-11-04 07:19:09 · 870 阅读 · 0 评论 -
c++基础语法总结
引用类型在c++中这样定义引用int &b = a; //定义引用时 必须同时定义引用的对象引用相当于指针,当时跟指针不同的是引用的并不占内存,也就是内存中并没有b引用的作用可以给函数用作参数,在修改参数的值同时,相当于修改了原来的引用对象#include<iostream>using namespace std;void add(int& a){ a = a+5; //在这了使用了引用类型的参数,直接就会修改引用对象的值}int _tmain(int arg原创 2020-09-06 06:49:17 · 430 阅读 · 0 评论 -
c++6.0下断点不能断下,程序还是继续执行
我用的vc6.0编译器,错误在于下了断点后点的感叹后,点击右边的箭头就可以了、原创 2020-02-26 13:21:30 · 320 阅读 · 0 评论 -
获取指定应用程序的PID
DWORD dwPid = 0;HWND hWnd = ::FindWindow(NULL, TEXT("计算器"));::GetWindowThreadProcessId(hWnd,&dwPid);原创 2019-06-08 00:03:32 · 1387 阅读 · 0 评论 -
c语言函数指针
#include "stdafx.h"int add(int a,int b){return a+b;}int _tmain(int argc, _TCHAR* argv[]){ typedef int (*PFunc)(int ,int); //定义一个函数类型的指针 PFunc 一定要加括号 PFunc pAdd; pAdd=add; printf("%d\...原创 2019-02-23 18:51:40 · 145 阅读 · 0 评论 -
友元函数
一般情况下,一个类的私有成员是不能被普通函数访问的。要想访问类的私有成员,就要在类里面说明函数为该类的友元函数加friend关键字即可class CBASE{ int x;public: CBASE() { x = 10; } void add(int a) { x += a; } friend void Print(const CBASE&amp; base);/...原创 2019-01-05 05:53:21 · 75 阅读 · 0 评论 -
常量指针与指针常量
const char* p = "我爱中国"; p = "daideiznegz"; 常量指针 一个指向常量的指针,指针指向的内容不可以被改变 char* constp = "我爱中国"; p = "daideiznegz";指针常量 指针是一个常量 也就是这个指针只能是这个值 不能被改变,不能指向别的地方与引用差不多。...原创 2019-01-05 06:06:24 · 93 阅读 · 0 评论 -
引用
语法:类型 &amp;引用名=目标变量名;引用相当于一个指针常量 也就是说引用必须初始化,而且不可以改变它的值。例如 int a = 100; int &amp;b = a;此时b即为a的引用。可以直接修改b的值来修改变量a。b不可以再引用为别的对象 int a = 100; int &amp;b = a; int c = 10; &amp;b = c;//错误,不...原创 2019-01-05 06:20:14 · 75 阅读 · 0 评论 -
链表
单向链表与vector连续的存储空间不同,链表是在堆里不连续的空间。优点是增加和删除数据更加方便,访问数据稍微慢一些。链表的模板类里面存放一个头结点的指针 这样才知道链表开始位置。 链表的节点数据必须包含一个指向下一个链表的指针,(这个指针为什么不能在模板类里面呢,因为模板类实例化一个对象时,这个指针只会有一个,那么不能存放多个链表的数据。而如果这个指针放在链表的节点数据里,每一次新增加一个...原创 2019-01-10 23:36:43 · 133 阅读 · 0 评论 -
this指针
类的this指针是什么?lea ecx,[ebp-10h] 取类的首地址传进类成员函数,这个就是this指针原创 2019-01-02 21:49:45 · 89 阅读 · 0 评论 -
虚函数
struct Base{void Func1(){printf(“func1”);}virtual void Func2(){ printf(&quot;func2&quot;);}};int _tmain(int argc, _TCHAR* arg){Base base;base.Func1();base.Func2();反汇编代码19: Base base;00F543B8...原创 2019-01-02 22:10:28 · 91 阅读 · 0 评论 -
new delete
使用new可以在堆里面申请一块内存 最终调用的HeapAlloc例如 申请一个int的内存int *p=new int使用完这个内存要删除 删除使用delete 最终调用的HeapFreedelete p申请一个数组int *p=new int[10]删除申请的数组要加[]delete[] p...原创 2019-01-09 13:45:32 · 72 阅读 · 0 评论 -
模板函数和模板类
template <class T>//在类的前面加这一句 class Vector{private: DWORD m_dwIndex;//下一个可用索引 T m_dwLen;//当前容器的长度 DWORD m_dwIncrement;//每次增容的大小 DWORD m_dwInitSize;//默认初始化大小 DWORD* m_pBuffer;//容器指针 pub...原创 2019-01-09 23:06:01 · 138 阅读 · 0 评论 -
auto关键字
在C++11标准的语法中,auto被定义为自动推断变量的类型。例如:auto x=5.2;//这里的x被auto推断为double类型map<int,int>m;for(auto it=m.begin();//这里it被auto推断为map<int,int>::iterator类型it!=m.end();++it){//....}不过C++11的auto...原创 2019-01-10 11:05:14 · 196 阅读 · 1 评论 -
类的私有继承与保护继承
类的保护成员与私有成员不能在类外访问。class A{ protected: int c;};int _tmain(_In_ int _Argc,char* _In_reads_){ A a; a.c=8; getchar(); return 0;}```编译时不能通过 error C2248: “A::c”: 无法访问 protected 成员(在“A...原创 2019-01-21 19:19:52 · 319 阅读 · 0 评论 -
裸函数
在函数前加_declspec(naked) 编译器将不会对你的函数加任何代码(不会提升堆栈等操作) 要在函数里面自己加返回的代码 ret不然就会出现堆栈不平衡的情况#include "stdafx.h" void_declspec(naked) test1(int a,int b) { _asm { ret //在这里要自己返回 } ...原创 2019-01-22 15:20:04 · 412 阅读 · 0 评论 -
数组的反汇编
#include "stdafx.h" void test1() { int s[5]={0}; int i=0; while (i&lt;5) { s[i]=i; i++; } int a=s[3]; } int _tmain(_In_ int _Argc,char* _In_reads_){ test1();...原创 2019-01-22 20:49:46 · 426 阅读 · 0 评论 -
多态
编译器绑定与动态绑定类的成员及普通成员函数是编译器绑定,在编译时,地址就被确定下来。E8为直接call 也就是调用的函数地址在编译时就已经被绑定好FF为间接call 调用函数的地址在对象绑定时确定。只有加virtual函数是动态绑定的。动态绑定还有一个名字就是多态。...原创 2019-01-04 04:37:03 · 102 阅读 · 0 评论