二进制指针2
xiu类型转化
基本类型之间可以相互转换,结构体不可以和基本类型之间转换
&符号
可以放到任何变量前面获取变量的地址,被称为取地址符,假设 char a变量,&a的类型就是char + *也就是char*类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include "stdafx.h"
struct st { int age; int name; };
void fun() {
char x =10;
char* y=&x;
}
int main(int argc, char* argv[]) {
fun(); getchar(); return 0;
}
|

求值
*
跟变量名那么这个变量本身必须是指针类型,*
和&
相反,星号作用是去掉一个星号
&取地址,*取值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include "stdafx.h"
int main(int argc, char* argv[]) {
int a=10; int* b=&a;
int c=*b;
getchar(); return 0;
}
|
1 2 3 4 5 6 7 8 9 10 11 12
| 9: 10: int a=10; 0040BBB8 mov dword ptr [ebp-4],0Ah 11: 12: int* b=&a; 0040BBBF lea eax,[ebp-4] 0040BBC2 mov dword ptr [ebp-8],eax 13: 14: int c=*b; 0040BBC5 mov ecx,dword ptr [ebp-8] 0040BBC8 mov edx,dword ptr [ecx] 0040BBCA mov dword ptr [ebp-0Ch],edx
|
指针操作数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include "stdafx.h"
void fun() { char arr[5]={1,2,3,4,5};
char* pa = arr;
for(int i=0;i<5;i++) { printf("%d\n",*(pa+i)); }
}
int main(int argc, char* argv[]) {
fun(); getchar(); return 0;
}
|
