C语言11

来源:互联网 发布:c4d最新版软件下载 编辑:程序博客网 时间:2024/06/16 13:34

今天学习了C中的指针,指针*p的核心是取地址的值,P为地址,

1.理解while在这里用途

2.理解通过地址修改地址所在的数值

3.通过dll文件给.exe进行打针的操作


#include <stdio.h>
#include <Windows.h>
void main(){
int time=0;
printf("%x\n",&time);
while(1){
printf("time=%d\n",++time);
Sleep(1000);
}
}

#include <stdio.h>
_declspec(dllexport) goNum(){
int *p = 0x38fcc4;
*p=4000;
}

倒计时的操作,第二个4000可以打针进入第一个,这样可以重置时间,这就是外挂的原型,修改内存中的数据来达成自己想要的效果。单机游戏的数据都是特定的,可以用这种打针方法,自己编写程序替换原有内存中的数据,已达成外挂的效果。

在换地址的时候,值是不会改变的。在一个函数中交换地址是有效的,不同函数则无效。

int *p=0; 

int *p = NULL;这两个是等价的

要注意形参和实参的关系。



int swap(int *p1,int *p2){              两种形式,一种是以*p为变量,这时候需要定义一个新的变量c来开辟内存空间,然后给*p赋值,不然会造成系统崩溃,一种是以p为变量

int p ;                                                可以直接使用。

p = *p1;

*p1 = *p2;

*p2 = p;

return *p1,*p2;

}

int swap(int *p1,int *p2){

int c=o;

int * p = &c ;                 这个地方int *p 没有赋值的情况是不能使用的,windows上面崩溃,linux是报错不能直接使用。

*p = *p1;

*p1 = *p2;

*p2 = *p;

return *p1,*p2;

}

void main(){

int a ,b;

int p1,p2;

scanf("%d,%d",&a,&b);

p1=&a;

p2=&b;

if(a<b){

swap(p1,p2)

printf|("%d,%d",a,b)

}

}

0 0