标签:for turn enum stl printf 数据 数据结构 自己 print
第一个是指向自己指针。
第二个是指向结构体
第三个是元素个数
// 数据结构.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <vector> #include <list> #include <map> using namespace std; struct MyVector { struct MyVector* pSelf; int* pDataStart; int* pDataEnd; int* pBufEnd; }; struct MyNode { struct MyNode* pNext; struct MyNode* pPrev; int nData; }; struct MyList { struct MyList* pSelf; struct MyNode* pRoot; int nNodeCount; }; void testVector() { // 动态数组,数据存储在堆内存中 // 当元素发生改变之后,会动态增加内存。 vector<int> vecObj; vecObj.push_back(1); vecObj.push_back(2); vecObj.push_back(3); vecObj.pop_back(); vecObj.push_back(4); vecObj.push_back(5); vecObj.push_back(6); vecObj.push_back(7); //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ // 遍历vector for (size_t i = 0; i < vecObj.size(); i++) { printf("vecObj[%d] = %d", i, vecObj[i]); } //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ // 遍历vector vector<int>::iterator iter = vecObj.begin(); while (iter != vecObj.end()) { int n = *iter; printf("vecObj i = %d", n); iter++; // 有临时对象产生 //++iter;// 无临时对象 } //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ // 定义结构,操作vector MyVector* pVector = (MyVector*)&vecObj; int size = ((int)pVector‐>pDataEnd ‐ (int)pVector‐>pDataStart) / sizeof(int)) for (size_t i = 0; i < size; i++) { //pVector‐>pDataStart[i] = 3; int n = pVector‐>pDataStart[i]; printf("元素=%d\n", n); } } void testList() { // 双向循环链表, 节点 list<int> listObj; listObj.push_back(1); listObj.push_back(2); listObj.push_back(3); listObj.pop_back(); listObj.push_back(4); //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ MyList* pList = (MyList*)&listObj; int size = pList‐>nNodeCount; MyNode* pNode = pList‐>pRoot; while (pNode‐>pNext != pList‐>pRoot) { pNode = pNode‐>pNext; int n = pNode‐>nData; printf("元素=%d\n", n); } } struct MyMapNode { struct MyMapNode* pLeft; struct MyMapNode* pParent; struct MyMapNode* pRight; int unknown; int nkey; int nValue; }; struct MyMap { struct MyMap* pSelf; struct MyMapNode* pRoot; int nNodeCount; }; void enumMapNode(MyMapNode* pNode, MyMapNode* pRoot) { if (pNode == pRoot) return; //printf("key=%d, value=%d\n", pNode‐>nkey, pNode‐>nValue); enumMapNode(pNode‐>pLeft, pRoot); printf("key=%d, value=%d\n", pNode‐>nkey, pNode‐>nValue); enumMapNode(pNode‐>pRight, pRoot); } void testMap() { map<int, int> mapObj; typedef pair <int, int> Int_Pair; mapObj.insert(Int_Pair(1, 0x11)); mapObj.insert(Int_Pair(2, 0x22)); mapObj.insert(Int_Pair(3, 0x33)); mapObj.insert(Int_Pair(4, 0x44)); mapObj.insert(Int_Pair(5, 0x55)); mapObj.insert(Int_Pair(6, 0x66)); MyMap* pMap = (MyMap*)&mapObj; MyMapNode* pNode = pMap‐>pRoot‐>pParent; enumMapNode(pNode, pMap‐>pRoot); //mapObj.erase(2); //mapObj.insert(Int_Pair(7, 0x77)); //mapObj.insert(Int_Pair(3, 0x55)); } int main() { testVector(); testList(); testMap(); getchar(); return 0; }
CWinApp的派生类中的 InitInstance
CDialog的OnInitDialog
各种消息处理函数
分析MFC程序,我们应该去寻找特征: 同一个版本的MFC程序,特征应该一样。 寻找InitInstance
mov eax,dword ptr [edx] mov esi,esp
mov ecx,dword ptr [eax+58h] mov dword ptr [ebp‐24h],ecx mov edi,esp mov ecx,dword ptr [ebp‐24h]
寻找按钮点击的特征 2017
标签:for turn enum stl printf 数据 数据结构 自己 print
原文地址:https://www.cnblogs.com/ltyandy/p/11256630.html