- 博客(25)
- 资源 (2)
- 收藏
- 关注
原创 InlineHOOK
//inline hook 实际上就是指 通过改变目标函数头部的代码来使改变后的代码跳转至我们自己设置的一个函数里,产生hook.#include <windows.h>#include <stdio.h>//定义一个与MessageBoxA类型一致的函数指针。typedef int (WINAPI * MessageBox_type)(HWND hWnd, ...
2019-01-03 17:18:55
4536
原创 C++模板小例
#include using namespace std;/*模板template的应用*/template //使用模板将type定义成一个可根据实际情况被编译器自动识别并设定的数据类型tswap(type & a, type & b){ type temp; temp = a; a = b; b = temp;}int main(){ int x = 6, y = 8
2016-06-02 21:43:47
423
原创 C++函数指针
#include using namespace std;/*函数指针*/void func(float x, int y){ x = x+y; cout<<x<<endl;}void dunc(float, int);float jin(float x, int y){ return x+y;}void kon(int);void main(){ void (*p
2016-05-15 11:23:49
522
原创 C++静态成员(静态成员变量、静态成员函数)与正常成员互相调用的权限问题
#include using namespace std;/*静态成员(静态成员变量、静态成员函数)与正常成员间相互调用的访问权限问题:静态成员不专属于某个对象,而是属于该类的所有对象,所有对象都可对其进行相关的操作;静态成员函数则只能使用静态的成员变量或成员函数(当然全局的除外);而静态成员函数或变量不影响其继承和被使用的权限。*/int kk = 0;class stu {pu
2016-05-14 22:26:26
1676
原创 C++子父类成员之间相互访问的权限分析
/*子父类成员之间互相访问权限分析: 基类的成员函数只能访问基类的成员(包括成员函数和成语变量),继承而来后,子类中从父类继承来的成员函数同样也只能访问那些从父类继承而来的成员,而子类却可以访问从父类继承而来的和自己的所有的成员。这是因为构造子类对象时会先构造其继承而来的父类的部分,而此时压根儿没有子类成员的事儿,所以从父类继承的成员不能访问子类的成员。而之后是构造子类的自定义成员部分,此时
2016-05-14 21:50:02
5295
原创 C++纯虚函数作为接口类举例
#include using namespace std;/*抽象类作为接口类举例*/class Shape{public: virtual double area() = 0;//纯虚函数,纯虚函数首先与子类的对应函数属重载函数,除了形参可不相同(相同为重写),返回值类型等都相同。protected:private:};//抽象类,不能直接声明对象,仅作接口类使用。class
2016-05-14 10:42:23
3768
原创 C++对象链表的创建与销毁
#include using namespace std;/*对象链表(new/delete)*/#define LEN sizeof(stu)//定义单向链表结点的数据类型class stu{public: char name[20]; int age; int sex; stu * Next;};void CreateList(int, stu **);void
2016-05-08 01:34:08
8924
2
原创 C++字符串相关操作函数
#include using namespace std;/*字符串相关操作函数:strcat、strcpy、strcmp、strupr、strlwr、strlen*/void main(){ char str0[100] = "This is a C++ program!"; char str1[10] = "So what!"; //strcat 字符串连接函数 strcat(
2016-05-06 17:25:10
524
原创 C++字符串的输入问题
#include #include using namespace std;/*字符串的输入:使用字符串输入的专属函数gets()、cin.get():gets()同cin、scanf一样,无法检测数组下标越界的问题,这会导致程序运行时崩溃。cin.get()可以指定录入的个数,从而避免了下标越界带来的问题。*/void main(){ const int n = 100; ch
2016-05-06 15:52:06
902
原创 C++对象指针数组与堆中对象数组
#include using namespace std;/*堆中对象数组、对象指针数组*/class stu{public: void set(int x){i = x + 6;} int get(){return i*i;};private: int i;};void main(){ const int n = 1000; stu * p = new stu[n];
2016-05-06 11:15:31
4734
原创 C++数组的二分法查找
#include using namespace std;/*二分法查找*/int find(int, int [], int);//二分法查找void line(int [], int);//冒泡排序int main(){ int a[] = {13,2,4,7,9,123,456,5,8,12,666,888,999,1234,3,11,22}; int n = sizeof(
2016-05-05 21:30:22
3937
原创 C++数组与指针的关系
#include using namespace std;/*指针与数组:数组名可用来像指针那样加减常数n(表示移动n个元素),数组指针也可像数组名那样来用下表锁定元素。*/void func(int i[])//数组名作为函数形参时,将由指针常量变为指针变量。{ int * p = i; for (int j=0; j<15; j++) { p[j] = j;//指向数组的指针
2016-05-05 14:37:37
373
原创 C++数组元素比较排序
#include using namespace std;/*比较排序问题*/int main(){ const int n = 6; int i[n] = {23,45,1,8,6,666}; int k; int t; for (k=1; k<n; k++)//6个数共需要比较5回 { for (int j=0; j<(n-k); j++)//第一回比较要比较6个数即5
2016-05-05 11:37:03
3207
原创 C++中指向子类的父类指针访问父、子类成员时的权限和函数隐藏规则
/*指向子类对象的父类指针访问父、子类成员的权限问题*//* 继承中:使用指向对象的指针访问类成员时与使用对象直接访问类成员的访问权限和成员隐藏情况是不一样的。 ··使用对象直接访问成员时,继承来的子父类成员都可以访问;子父类中有同名成员时,子类一定覆盖父类。·· ··使用指向子类的父类指针时,只可直接访问的是父类成员,基类成员函数前加virtual且子类中有同名函数时才会使用子
2016-05-03 14:17:39
2860
1
原创 C/C++用动态链表实现对学生信息的存储
/************************************************************************//* 此程序是运用动态内存分配的手段来实现用链表的方式存储学生相关信息的。链表,是一种自定义数据类型。在使用结构体数组或结构体指针存储复杂数据类型时需要较大的连续的内存空间,若无需要长度的连续空间会致使操作失败,并且使用结构体数组或结构体指针时
2015-10-20 20:36:12
5258
2
原创 C/C++动态自定义结构体数组实例锻炼-学生成绩排序
/************************************************************************//* 本程序是对动态内存、动态数组、结构体、函数的综合应用。 *//************************************************************************/#include #i
2015-10-11 20:47:46
7654
原创 C/C++动态内存分配之用malloc和指针实现动态数组排序
/************************************************************************//*动态数组解决了静态数组对内存空间的耗用问题,同时由于其使用的是指针,所以在多函数调用上快速、便捷。 用malloc和指针定义动态数组,其关键是要准确理解指针的含义和数组的操作手段。此程序的功能是用动态内存分配的手段实现输入数组的排序。
2015-10-09 00:39:41
2876
原创 C/C++之数组与指针关系-全解全息
/************************************************************************//* 一维数组名是一个指针常量,其值是此数组的第一个元素的地址,即此数组的首地址所以,它可以直接赋值给指针变量,因为其数据类型都是地址类型。 二维及多维(n)数组名不是像一维数组名那样的指针常量,是指向其(n-1)维数组的指针,因此,是不能
2015-10-07 17:34:17
460
原创 C/C++中指针所能指向的地址范围
//指针变量在32位操作系统下所占字节数是4,计算得出其所能寻址的范围大小是4GB,与32操作系统所能寻址范围一样大,足够用了;64位系统下指针变量所占字节数变为8,也够用。#include int main(void){ double t = 1; double sum; for (int j=1; j<=32; ++j) { t *= 2; } sum = t
2015-10-06 17:34:37
2729
原创 C/C++中变量作用域-全解全息
#include int k = 9; //全局变量,作用域是整个程序,当某个函数内部将全局变量重新定义时,则此函数就是用其自定义的值,但仅作用与其自身,不影响到其他函数int ch(int t) { float k = 9.9999; int i = 0, j = 1; for (i; i<j; ++i) { int kk = 111; //此处定义的变量 kk 作用域是
2015-10-06 14:26:47
610
原创 C/C++递归之汉诺塔求解
//递归有一明显的缺点是耗用资源较大,此程序输入盘子数量过大时将耗尽CPU资源#include /************************************************************************//* 汉诺塔的解题思路: 若只有一个盘子,则直接将盘子从柱子A移到C; 有N个盘子,借助柱子C将(N-1)个盘子从A移到B,再将第N个盘
2015-10-06 12:08:03
550
原创 C/C++中break和continue
/* break break 如果用于循环是用来终止循环,break只能终止距离它最近的循环 break如果用于switch,则是用于终止switch break不能直接用于if中,除非if属于循环的一个句子,但此时它的作用是循环而不是ifcontinue 只作用于距离它最近的循环:for 、while 、do ...while continue也不能直接用于if中,除非if属于循
2015-10-04 13:54:15
19258
原创 C/C++求非波拉契排列第N项
/* 非波拉契序列:前两项是1 2 之后,每一项是前两项之和 1 2 3 5 8 13 21 34 55 ......*/#include int main(void){ int i,n, sum, sum1, sum2; printf("请输入您要求的非波拉契序列的项数:\n"); scanf("%d", &n); if (n == 1) { printf(
2015-10-03 22:38:56
631
原创 输入三个数求由小到大顺序的另一种写法
#include int main(void){ int m, n, s; int a, b, c; printf("请输入三个整数,中间用空格隔开:\n"); scanf("%d %d %d", &a, &b, &c); if (a >= b && a >= c) { m = a; if (b >= c) { n = b; s = c; } el
2015-10-02 22:04:51
540
原创 C/C++ 一元二次方程
//ax2+bx+c=0 一元二次方程#include #include int main(void){ //将三个系数保存在计算机中 int a; int b; int c; printf("请输入一元二次方程的平方项系数a、一次项系数b和常数项系数c(若无则输入0):\n"); scanf("%d",&a); scanf("%d",&b); scanf("%d",
2015-09-27 12:52:13
2283
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人