码迷,mamicode.com
首页 > 编程语言 > 详细

[c/c++] programming之路(16)、指针

时间:2017-08-22 23:03:43      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:loading   系统   sizeof   ram   复制   技术   lex   class   %x   

一、调戏百度云管家

 1 #include<stdlib.h>
 2 #include<windows.h>
 3 
 4 _declspec(dllexport) void go(){
 5     while(1){
 6         ShellExecuteA(0,"open","http://www.baidu.com",0,0,1);
 7         MessageBoxA(0,"因为你的百度网盘存放了大量岛国大片","来自百度的邀请",0);
 8         malloc(1024*1024*10);//1k=1024Byte
 9         Sleep(8000);
10     }
11 }

 技术分享

 二、指针

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void main0()
 5 {
 6     int a = 1;
 7     int b = 2;
 8     int *p = &a;
 9     printf("*p=%d,a=%d\n", *p, a); //*p, a  等价
10     printf("p=%x,&a=%x\n", p, &a); //p, &a    等价
11     p = &b;     //指针改变指向
12     printf("%d\n", *p);
13     getchar();
14 }
15 
16 void main()
17 {
18     int a = 5;
19     int b = 8;
20     int *p = &a; //&a是一个地址,p存放地址,是一个指针变量
21     int **pp = &p; //**pp 对称int,可以当作int处理
22     *pp = &b;  //  *pp   int *是指针
23     *(*pp) = 1;
24     printf("%d,%d\n", a,b);
25 
26     getchar();
27 }

技术分享

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<Windows.h>
 4 char a = A;
 5 char b = B;
 6 char c = C;
 7 char d = D;
 8 
 9 void main(){
10     char *p = &a;
11     printf("&p=%x,&a=%x,&b=%x,&c=%x,&d=%x", &p, &a, &b, &c, &d);
12     while (1)
13     {
14         printf("我的游戏级别是%c\n",*p);
15         _sleep(4000);//跨平台暂停函数
16         //Sleep(2000);//仅在Windows平台使用
17     }
18     
19     system("pause");
20 }
1 _declspec(dllexport) void go(){
2     int **p=(int**)0x4ff820;
3     *p=(int*)0x2f8002;
4 }

上面的dll文件不要建.cpp文件,建成.c文件,否则dll进行注射时会失败

技术分享

指针的类型

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void main()
 4 {
 5     char *p1;
 6     int *p2;
 7     double *p3;
 8     //所有指针在32位系统下,都是4个字节
 9     printf("%d,%d,%d\n", sizeof(p1),sizeof(p2), sizeof(p3));
10     printf("%d,%d,%d\n", sizeof(*p1),sizeof(*p2), sizeof(*p3));
11 
12     getchar();
13 }

技术分享

不改变原值的情况下排序

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void main()
 4 {
 5     int a,b;
 6     scanf("%d%d",&a,&b);
 7     int *p1=&a,*p2=&b;
 8     printf("a=%d,b=%d\n", *p1, *p2);
 9     //从小到大
10     (*p1 > *p2)?printf("%d,%d",*p2,*p1):printf("%d,%d",*p1,*p2);
11 
12     system("pause");
13 }

技术分享

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void change(int a){//单向传递,复制,只能接收不能改变原值
 5     a=100;
 6 }
 7 
 8 void changeA(int *p){//双向赋值,新建了一个变量,复制了地址的值,根据地址改变原值
 9     *p=1000;
10 }
11 
12 void main()
13 {
14     int a=10;
15     change(a);
16     printf("%d\n",a);
17     changeA(&a);
18     printf("%d",a);
19 
20     system("pause");
21 }

技术分享

三、玩玩几种小工具

技术分享

 

[c/c++] programming之路(16)、指针

标签:loading   系统   sizeof   ram   复制   技术   lex   class   %x   

原文地址:http://www.cnblogs.com/little-monkey/p/7407327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!