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

一、调戏百度云管家

 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 }

三、玩玩几种小工具

时间: 2024-10-10 07:12:23

[c/c++] programming之路(16)、指针的相关文章

[c/c++] programming之路(17)、高级指针

一.二级指针 二级指针的作用:1.函数改变外部变量指针2.外挂改变一个指针的值 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int a = 10; 6 int b = 20; 7 int *p1 = &a; 8 int *p2 = &b; 9 int **pp = &p1; 10 printf("%d,", **pp); 11 printf("\n%x,

[c/c++] programming之路(15)、多维数组和二分查找法,小外挂

一.多维数组 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int num[3][4]; 6 int i,j; 7 for (i = 0; i < 3; i++) 8 { 9 for (j = 0; j < 4; j++) 10 { 11 num[i][j]=4*i+j+1; 12 printf("%-3d",num[i][j]); 13 } 14 printf("\

[c/c++] programming之路(21)、字符串(二)

一.for /l %i in (1,1,5) do calc 等命令行参数 1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 5 void main() { 6 /*char str[] ="for /l %i in (1,1,5) do calc"; 7 char *p = "for /l %i in (1,1,5) do calc";*

c++之路起航——指针

c++一阶指针 定义 存储类型名 数据类型 * 指针变量名: Eg:int *a://定义了一个指向整型的指针 a: 指针使用方法 int a,*b; b=&a;//表明将a的地址赋值给b: *b=5; //将b指针所指向的地址赋值给5:即等同于a=5: 指针使用前必须赋一个合法的值 int *a,b; *a=5;//这种表达方式是错误的,因为没有对a进行初始化,而就进行赋值. void *a//万能指针,可以接受任何类型的指针, int *a: void *b: char *c: b=a://

C#自学之路16

16.调试与异常处理 system.Exception类是异常类的基类,一般不要直接使用,它没有反映具体的异常信息,而使用的是它的派生类. try-catch-finally有三种形式: try-catch try-finally try-catch-finaaly try是检测异常的块,catch是匹配异常的快,finally是必须执行的快. 异常子类要放在异常父类前面.

oc学习之路----多级指针的使用和内存分析

---恢复内容开始--- 精髓:要熟悉指针的使用,首先要熟悉指针的各种状态存得是什么数据.(以一级指针 int *p1 二级指针:int **p2 三级指针:int ***p3为例) 一级指针:*p1 取得是目标存储空间的值  p2取得的是目标存储空间的存储地址,&p1取得是当前存储空间的存储地址, 二级指针使用: #include <stdio.h> void change3(int **p2){ int ***d3 = d2; ***d3 = 60 } void change2(i

[c/c++] programming之路(13)、函数

一.函数 1 #include<stdio.h> //stdio.stdlib标准库 2 #include<stdlib.h> 3 4 //代码重用, 函数的诞生,C语言主要是函数组成 5 //写C语言,就是写函数 6 //主要是代码重用,模块化(便于定位错误), 7 //函数就是对某一特定功能的抽象 8 void printfR(double R) 9 { 10 printf("体积=%f", 4 / 3 * 3.14*R*R*R); 11 printf(&q

[c/c++] programming之路(2)、kill QQ,弹出系统对话框,吃内存等

一.删除文件 二.盗取密码的原理 1 #include<stdlib.h> 2 3 //杀掉QQ,然后提示网络故障,请重新登陆,弹出高仿界面,获取账号密码,然后打开QQ进行登录 4 void main(){ 5 system("taskkill /f /im QQ.exe"); 6 system("pause"); 7 system("D:\\QQ\\Bin\\QQScLauncher.exe"); 8 } 三.弹出系统对话框 1 #

[c/c++] programming之路(1)、编写程序打开记事本、计算器等

一.命令行启动程序 通过命令行关闭程序:taskkill /f /im 程序名.exe 二.打开记事本.计算器 1 #include <stdlib.h> 2 3 void main(){ 4 system("notepad");//打开记事本 5 system("pause"); 6 7 system("calc");//打开计算器 8 system("pause"); 9 } 三.并行打开程序 1 #inclu