10.指针的运算
1. 指针可以加一个整数,往下指几个它指向的变量,结果还是个地址。但是前提: 指针变量指向的是一个数组,加一个整数才有意义。
2.同类型的指针可以比较大小。指向前面的元素的指针 小于 指向 后面的元素的指针。
如下所示:
int a[12];
int* p, * q;
p = &a[3];
q = &a[4];
if (p > q)
{
printf("p > q\n");
}
else if (p == q)
{
printf(" p == q\n");
}
else if (p < q)
{
printf("p < q \n");
}
3.两个相同类型的指针变量可以做减法,结果表示两者相差的字节数或两者之间隔了多少个存储单元。
void testjianfa()
{
int* p, * q;
int a[12];
p = &a[3];
q = &a[6];
printf("q - p = %d", (q - p));
}
函数运行结果:
4.两个相同类型变量的指针可以相互赋值
注意: 只有相同类型的指针才可以相互赋值。(void * 除外 )
void fuzhi()
{
int a = 3;
int* p, * q;
p = &a;
printf("*p = %d,a = %d \n", *p, a);
printf("=======================================\n");
q = p;
*q = 890;
printf("*p = %d,a = %d ,*q = %d\n", *p, a,*q);
}