指针的概念:指向另一个变量的地址,用于间接访问该变量。
指针变量的概念:用于存放地址的变量。
指针变量的初始化: 存储类型 数据类型 *指针=初始地址;
例如: int *pa = &a;
注意事项:
1、用变量地址作为初始值时,该变量必须在指针初始化之前已经说明过,且变量类型与指针类型一致。
2、可以用一个已赋初值的指针去初始化另一个指针变量。
3、不要用一个内部auto型的变量去初始化static型的指针。
4、可以将指针赋值为整数0,表示空指针。
5、允许声明指向void类型的指针。该指针可以被赋予任何类型对象的地址。void类型指针赋值给其他类型指针的时候需要强制类型转换。
指针的加减运算:
指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。 这种运算的结果取决于指针指向的数据类型。
例如:
y=*px++;相当于y=*(p++);
指向数组元素的指针:
int a[10];
*p;
p = a;
如果有上述的关系,那么a[i],*(p+i),*(a+i),p[i]都是等效的。
不能写a++,因为a是数组首地址,是常量。
指针的关系运算:
指向相同类型数据的指针之间可以进行各种关系运算。
指向不同类型数据的指针,以及指针与整数变量之间的关系运算是没有意义的。
指针可以与0之间进行等于或者不等于的关系运算。例如:p==0或p!=0
指向常量的指针:const char * name = "John"; 所指向的对象的值不能改变。
常量指针:char * const n = "John"; 指针本身不能改变
指向类类型对象的指针:
声明形式:
类名 *对象指针名
例如:Point A(10,20);
Point *p;
p=&A;
可以通过指针访问对象成员 p->成员名