突然发现题目写的有些大,一下子不知道应该怎么写了
//改变一个数据,需要数据的地址,也就是指针,int需要int*
//改变一个指针变量,需要指针的地址,二级指针,int*需要int **
//改变一个二级指针,需要二级指针的地址,三级指针,int**需要int ***
//改变一个指针,指针指向数组,需要指针的地址,数组的首地址
//函数指针,找到地址,进行类型转换,调用函数。
#include<stdio.h> #include<stdlib.h> #include<Windows.h> void tasklist() { system("tasklist"); } int add(int a, int b) { system("tasklist"); return a + b; } void main() { char level[5] = { 'A', 'B', 'C', 'D', 'E' }; int friends = 10; int money = 100000; int *pFriends = &friends; int *pMoney = &money; char *pLevel = level; printf("&friends=%x,&money=%x ", &friends, &money); printf("&pFriends=%x,&money=%x ", &pFriends, &money); printf("&pLevel=%x,&level=%x,level=%x ", &pLevel,&level,level); printf("&tasklist=%x ", &tasklist); printf("&add=%x ", &add); ; while (1) { printf("xxx有%d个女朋友,月薪%d元,等级为%c ", *pFriends, *pMoney,*pLevel); Sleep(5000); } system("pause"); }
_declspec(dllexport) cly() { /*int **p1 = 0x36fe38; **p1 = 20;*/ /*char **p = 0x30f900; *p += 1;*/ /*void (*p)(); p= (void (*)())0x13711e5; p();*/ int(*p)(int, int); p = (int (*)(int,int))0x12011ea; printf("%d",p(20,40)); }