1.指针是一个其值为地址的变量(或更一般的说是一个数据对象)。如果你想把某个指针变量命名为ptr,可以用语句:ptr=&pooth; 称ptr指向pooth。ptr和&pooth的区别在于前者为一变量,后者是一个常量。
2.间接运算符*
假定ptr=&bah; 可以使用间接运算符*(也称取值运算符)来获取bah中存放的数值。
val=*ptr; 两个语句放在一起等于val=bah;
注:(1)地址运算符& 后跟一个变量名时,&给出该变量的地址。
(2)间接运算符* 后跟一个指针名或者地址时,*给出存储在被指向地址中的数值。
3.指针的声明
例:int *pi; char *pc;
类型标识符表明了被指向变量的类型,而*表示该变量为一指针。声明int *pi;的意思是pi是一个指针,而且*pi是int类型的。*和指针名之间的空格是可选的,通常在声明中使用空格,而在指向变量时将其省略。
4.指针操作
假定:int urn[5]={100,200,300,400,500};
int *ptr;
ptr=urn;
ptr1=&urn[2];
(1)赋值——可以把一个地址赋给指针。
通常使用数组名或者地址运算符&来进行地址赋值。地址应该和指针类型兼容。例如不能把一个double类型的地址赋给一个指向int的指针。
(2)取值——运算符*可以取出指针指向地址中存储的数值。
(3)取指针地址——指针变量同其他变量一样具有地址和数值,使用&运算符可以得到存储指针本身的地址。
(4)将一个整数加给指针
可以使用+运算符来把一个整数加给一个指针。例如:ptr+4等同于&urn[4]。如果相加结果超出初始指针所指向的数组的范围,那么结果是不确定的。
(5)增加指针的值
可以通过一般的加法或增量运算符来增加一个指针的值。对某数组元素的指针做增量运算,可以让指针指向下一个元素。例如ptr++使ptr指向urn[1]。
(6)从指针中减去一个整数 (同第(4)条)
(7)减小指针的值(同第(5)条)
(8)求差值——可以求出两指针间的差值
通常对分别指向同一个数组内两个元素的指针求差值,以求出元素之间的距离。差值的单位是相应类型的大小。例如:ptr1-ptr的值是2,表示指针所指向对象之间的距离为两个int数值得大小。参加运算的两个指针要指向同一个数组。
(9)比较——可以使用关系运算符来比较两个指针的值,前提是两个指针具有相同的类型。