指针访问一维数组
*(p+i) <=> a[i] //等价 数组下标访问 本质上就是指针运算
指针的运算:p+N // 指针+数字
//含义: 表示 指向了 第N个元素的位置
//数值上看,sizeof(基类型)*N
a[0]的类型 int
&a[0] => 取了一块存放着 int型数据的 空间的地址 int *
int *p = a;
*(p+i) <=> a[i] <=>p[i]<=> *(a+i)
指针运算:
&
*
+N
-N
p++ //往后跳了一个元素
p-- //往前
p-q //相同类型的指针 减出的来的结果为 ,地址之间相差的元素个数
关系运算
p > q
p < q
> >= < <= !=
迭代 //从上一个 推到下一个
练习:
以迭代的方式 (指针操作) 的方式,实现数组累加求和
#include<stdio.h>
int sumArray(int *begin,int *end)
{
int sum = 0;
while(begin<=end)
{
sum += *begin;
begin++;
}
return sum;
}
int main(void)
{
int a[10] = {3,6,2,1,4,8,9,0,7,5};
printf("sum = %d\n",sumArray(&a[0],&a[9]));
return 0;
}