for(p=&a[0];p<&a[i];p++)
{
sum+=*p;
}
通常情况下,a+i等同于&a[i](两者都指向数组a中元素i的指针),并且*(a+i)等价于a[i]。
为了化简这个循环,可以用a替换&a[0],同时用a+n代替&a[n];
for(p=a;p
{
sum+=*p;
}
二维数组:int row,col;
int *p;
int a[row][col];
for(p=&a[0][0];p<&a[row][col];p++)
{
sum+=*p;
}
或
int i=0;
int row,col;
int *p;
int a[row][col];
for(p=&a[0];p<&a[row];p++,i++)
{
sum+=(*p)[i];
}
或
int i=0;
int row,col;
int *p;
int a[row][col];
for(p=a;p
{
sum+=(*p)[i];
}
第二种:用指针作为数组名 一维数组:int a[10],i,sum=0,*p=a;
for(i=0;i { sum+=p[i]; } 编译器把p[i]看作*(p+i)。