指针
1、定义
基类型 * 指针变量名
2、赋值
int a;
int *pa=&a;// int a,*pa=&a;
int *p2;
p2=&a;
两个运算符
& 取地址,后面操作数必须是变量
- 指针运算符,后面的操作数必须是指针
int a=3;
int *pa=&a;
&a 正确,表示a的地址
&pa 正确,表示pa的地址
*a 不对
*pa 正确,表示的是pa指向的变量,即a
*&a 正确, 表示的就是a
*&pa 正确,表示的是pa
&*a 不对
&*pa 正确,表示的是pa,即&a,
& * 如果正确使用,则两个运算符可以相互抵消
void exchange(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
void exchange(int *p1,int *p2)
{
int *t;
t=p1;
p1=p2;
p2=t;
}
利用指针访问(引用)数组
通过下标遍历数组元素
int a[]={1,2,3,4,5};
a表示的是数组首元素的地址,是一个地址常量,不能改变,等价&a[0]
int * pa=a;//指针变量pa指向数组首地址
int *pa=&a[0];
如果指针变量指向数组的首地址,此时指针变量可以使用下标,即指针变量等同于数组名
a[1]====>pa[1]
当指针变量指向数组的时候,指针变量的加减运算才有意义
当指针变量pa指向数组a的首地址,且pa的值不能改变,一直指向数组的首地址,i表示下标
pa+i等价于&a[i]等价于&pa[i]等价于a+i 表示的是数组元素的地址
(pa+i)等价于a[i]等价于pa[i]等价于(a+i) 表示的是数组元素