# 性质
# 宽度
固定为 4 字节
# 声明
int* a; int *a; | |
数据类型* a; 数据类型 *a; | |
两者相同 |

# 赋值
void test() | |
{ | |
int a; | |
a=10; // 完整的 a=(int) 10; | |
} | |
对比 | |
void test2() | |
{ | |
int* a; | |
char***** b; | |
a=(int*)10; | |
b=(char*****)20; // 只能用完整的形式 | |
} |

# 运算
# ++--
++ 或 --,变化的数值取决于去掉一个 * 号后的数据的宽度
void test() | |
{ | |
char* a; | |
short* b; | |
int* c; | |
char** a1; | |
short* b1; | |
int* c1; | |
a=(char*)10; | |
b=(short*)10; | |
c=(int*)10; | |
a1=(char*)10; | |
b1=(short*)10; | |
c1=(int*)10; | |
a++; | |
b++; | |
c++; | |
a1++; | |
b1++; | |
c1++; | |
printf("%d %d %d %d %d %d %d",a,b,c,a1,b1,c1) | |
//a+1 b+2 c+4 a1+4 b1+4 c1+4 | |
} |
# 加减法
加(减)X 就相当于 ++(--)X 次
void test() | |
{ | |
char* a; | |
short* b; | |
int* c; | |
a=(char*)10; | |
b=(short*)10; | |
c=(int*)10; | |
a=a+5; | |
b=b+5; | |
c=c+5; | |
printf("%d %d %d",a,b,c) //a+5 b+10 c+10 | |
} |

# 相减
void test() | |
{ | |
short* a; | |
short* b; | |
a=(short*)200; | |
b=(short*)100; | |
int x=a-b; //ab 类型必须严格相同,"*" 数量不同也不行 | |
printf("%d",x) //x=50 | |
} | |
void test1() | |
{ | |
short** a; | |
short** b; | |
a=(short**)200; | |
b=(short**)100; | |
int x=a-b; // 指针减完之后会变为 int 型不再是指针类型 | |
printf("%d",x) //x=25 | |
} |

# 比较大小
void test() | |
{ | |
short* a; | |
short* b; | |
a=(short*)200; | |
b=(short*)100; | |
if(a>b) | |
{ | |
printf("1"); | |
} | |
if(b>a) | |
{ | |
printf("0"); | |
} | |
} |

# 应用
# 类型转换
void test() | |
{ | |
char* a; | |
int* b; | |
a=(char*)10; | |
b=(int*)a; | |
} |
# 符号的使用

# 求值

# 指针操作数组
