指针
1、定义
基类型 * 指针变量名
2、赋值
int a; int *pa=&a,*pa=&a int *p2=&a
两个运算符
&取地址,后面操作必须是变量
*指针运算符,后面的操作必须是指针。
int a=3;
int *pa=&a;
&a 正确,表示a的地址
&pa 正确,表示pa的地址
*a 不对
*pa 正确,表示的是pa指向的变量,即a
*&a 正确, 表示的就是a
*&pa 正确,表示的是pa
&*a 不对
&*pa 正确,表示的是pa,即&a,
& * 如果正确使用,则两个运算符可以相互抵消
通过指针引用数组:
所谓的数组元素的指针就是数组元素的地址
通过下标遍历数组元素
int a[]={1,2,3.4,5,6};
a 表示的是数组首元素的地址,是一个常量,不能改变,等价于&a[0];
p=&a[0]等价于p=a;
在一定条件允许下对指针进行加和减的运算。
当指针指向数组元素的时候,比如,指针变量p指向数组元素a[0],我们希望p+1表示a[1]。在指针已经指向一个数组元素的时候,可以进行加一个整数,可以减一个整数,自加运算,自减运算。
int *pa=a; 指针变量pa指向数组首地址
int *pa=&a[0];
如果指针变量指向数组首地址,此时指针变量可以使用下标,即指针变量等同于数组名。
当指针变量指向数组的时候,指针变量的加减运算才有意义。
当指针变量pa指向数组a的首地址,且pa的值不能改变,一致指向数组的首地址,i表示下标
pa+i<== > &a[i] <>&pa[i]<>a+i 表示数组元素的地址
(pa+i)《=》a[i]《=》pa[i]《===》(a+i) 表示的是数组元素