1.指针只支持4 种算术运算符:++,――,+,-.指针只能与整数加减.指针运算的原则是:每当指针的值增加时,它将指向其基本类型的下一个元素的存储单元.减少时则指向上一个元素的存储单元.
2.++,――运算符,假设int 型x 的地址为200,且int 型占4 个字节,定义int *p;p=&x;则p++的地址将是204,而 不是201,因为当指针p 的值增加时,它都将指向下一个int 型数据.减少时也是这样,如p――则,p 的地址将是196.
3.+,-,运算符,注意两个指针不能相加.例int *p;p=&x;假设x 的地址为200,则p+9 将的指针地址将是200+4*9=236, 即p 指向了从当前正指向的元素向下的第9 个元素.
4.两指针相减,同类型的一个指针减去另一个指针的值将是两个指针分开的基本类型的元素的个数.
5.&地址运算符是一元运算符,能反回它的操作数的内存地址.如y=&x;把变量x 的地址输入到y 中,它与x 的值无关,比如x 的值为1000,而x 的地址为55 则,y 将接收到地址55。
6.*指针运算符是一元运算符,它是&运算符的相反形式,*运算符能反回位于其操作数所指定的地址的变量的值. 例如 y = &x;z = *y;假设x 的值为1000,地址为55,则第二条语句说明z 的值为1000,*y 把由y 所指向的内存的地址的变量x 的值赋给z。*运算符可理解为“在地址中”,则z=*y 可描术为“z 接收了在址址y 中的值。”。
7.其实可以把*y 当成一个变量来使用,即可以为*y 赋值等,例如*y=100;(*y)++;等,但要注意的是对*y 的操作相当 于是对此指针指向的地址中的变量的操作,即对*y=100 的赋值语句,相当于是x=100,而(*y)++则相当于x++。