X86 逆向反汇编: 指针

匿名 (未验证) 提交于 2019-12-02 23:32:01

注意点:
1、带*类型的变量宽度永远是4字节、无论类型是什么,无论有几个*.
2、带*类型的变量,++ 或者 -- 新增(减少)的数量是去掉一个*后变量的宽度
3、带*类型的变量可以加、减一个整数,但不能乘或者除.
4、带*类型变量与其他整数相加或者相减时:

 	char* a; 	short* b; 	int* c;  	a = (char*)100; 	b = (short*)100; 	c = (int*)100;  	a = a + 5; 	b = b + 5; 	c = c + 5;  	printf("%d %d %d", a, b, c); 	//105 110 120 	   	char** a; 	short** b; 	int** c;  	a = (char**)100; 	b = (short**)100; 	c = (int**)100;  	a = a + 5; 	b = b + 5; 	c = c + 5;  	printf("%d %d %d", a, b, c); 	//120 120 120

5、两个类型相同的带*类型的变量可以进行减法操作,想减的结果要除以去掉一个*的数据的宽度.

 	char* a; 	char* b;  	a = (char*)200; 	b = (char*)100;   	int x = a - b;  	printf("%d\n", x); 	//100  	short* a; 	short* b;  	a = (short*)200; 	b = (short*)100;   	int x = a - b;  	printf("%d\n", x); 	//50 

6、带*的变量,如果类型相同,可以做大小的比较
7、带*类型的变量,可以通过在其变量前加*来获取其指向内存中存储的值.
8、在带*类型的变量前面加*,类型是其原来的类型减去一个*.
9、&arr[0]代表取数组中第一个元素的地址,可以省略为数组名.
10、*(p+i) = p[i].
11、数组做为参数时,传递的是地址.数组做为参数时,应该传递数组的长度.
12、字符串:编译器后在后面添一个 00 做为字符串的结束标记。%s:打印一个字符串,直到内存为 0 为止;

文章来源: https://blog.csdn.net/yuqian123455/article/details/89784649
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!