p = a;
p = &a[0];
它们都是把3000这个地址值赋给了指针p。同样如下语句也是等价的:
p = a + 1 == p + 1;
p = &a[1];
它们都是把3002赋给p。数组a和指针p之间的关系如下:
【注】p = a + 1和p = p + 1语句是正确的,但a = a+1语句是错误的。
如果已经对数组a的元素进行了赋值,求数组所有元素的和。代码如下:
int sum = 0;
for(p = a; p <= &a[99]; p++)
sum += *p;
在循环中,指针变量p的初值是数组a的基地址,p连续取值&a[0], &a[1], … , &a[99]。
一般而言,如果i是int型变量,那么p + i 就是距地址p的第i个偏移,类似地,a + i 是距数组a的基地址的第i个偏移,*(a + i)与a[i]等价。下面是对数组元素求和的第二种方法:
int sum = 0;
for