一、在一维数组中指针的使用
1.
int a[5]={1,3,5,7,9};
int *p=&a[0];*q=&a[4];
q-p=4; //有意义,4代表q与p直接的元素个数
p+q或q+p//均无意义
注:q与p必须指向同一个数组,去进行减法计算才有意义。
2.
a++ //是错误的
p++//是正确的,因为a是一个地址常量,而p是一个地址变量,并且++只能作用于变量之中
3.
p=a;
(1)printf("%d",*p++);printf("%d",*p);
输出结果为:13
(2)printf("%d",(*p)++);printf("%d",*p);
输出结果为:12
(1)printf("%d",*p++);printf("%d",*++p);
输出结果为:15
注:*,++都为单目运算符,且同级,所以*p++=*(p++);
*p++先用后加,此时*p++=*(p++),也就是p先输出p现在指向的内容(先用),然后p的指向再加一指向&a[1](后加);
(*p)++先用后加,得到*p的内容,也就是a[0]的内容,然后输出a[0]的内容(先用),然后a[0]+1,此时a[0]=2(后加);
4.一维数组重点理解
1)表示地址的(其中i为变量)
p+i,a+i,&a[i],p++,p--;//对
&(a+i);//错
2)表示值的
*(p+i),*(a+i),a[i],*(&a[i]),*p++;//对