指针变量的基本操作:
1. 赋值。可以把地址赋给指针。例如数组名、带地址运算符(&)的变量名,另一个指针等进行赋值。
注意:地址应该与指针类型兼容,即不能把double类型的地址赋给指向int的指针。
2. 解应用:*运算符给出指针上指向地址存储的值。
3. 取址:和所有变量一样,指针变量也有自己的地址和值。对指针而言,&运算符给出指针本身的地址。
4.指针与整数相加:可以使用+运算符把所有指针与整数相加,或整数与指针相加。无论哪种情况,整数和指针都会和指针所指向类型的大小(以字节为单位)相乘,然后把结果与初始地址相加。eg:ptr1=&urn[0],那么ptr1+4与&urn[4]等价。
5. 递增指针:递增指向数组元素的指针可以让该指针移动至数组的下一个元素。因此ptr1++,相当于把ptr1的值加上4(int整型字节长度为4),然后指向urn[1]。但是注意,ptr1本身的地址不会变,毕竟,变量不会因为值发生变化就移动位置。
6. 指针减去一个整数:可以使用-运算符从一个指针中减去一个整数,指针必须是第一个运算对象,整数是第二个运算对象。
该整数将乘以指针指向类型大小(以字节为单位),然后用初始地址减去乘积。所以ptr3-2与&urn[2]等价,因为ptr3指向的是&arn[4].如果相减的结果超出了初始指针所指向数组的范围,计算结果则是未定义的。
7. 递减指针:
8. 指针求差:可以计算两个指针的差值。通常,求差的两个指针分别指向同一个数组的不同元素,通过计算求出两个元素之间的距离。差值的单位与数组类型的单位相同。eg:ptr2-ptr1得2,意思是这两个指针所指向的两个元素相隔两个int,而不是两个字节。只要两个指针指向相同的数组,就可以保证相减运算有效。
9.比较:使用关系运算符可以比较两个指针的值,前提是两个指针都指向相同类型的对象。
注意:减法分为两种:可以用一个指针减去另一个指针得到一个整数,或者用一个指针减去一个整数得到另一个指针。
注意:不要解引用未初始化的指针。创建一个指针时,系统只分配了存储指针本身的内存,并未分配存储数据的内存。,因此,使用指针之前,必须先用已分配的地址初始化它。