C++数姐的降维外理的问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 11:30:19
#include<iostream.h>
const int M=4,N=3;
int sum(int *, int ,int,int);
void main()
{
int total,a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12};
total=sum(a[0],3,1,3);
cout<<"total row1_3:"<<total<<endl;
return;
}
int sum(int *pa,int col,int i,int j)
{
int t=0,*p;
for(p=pa+col*i; p<pa+col*(j+1);p++)
t=t+*p;
return t;
}

我不明白sum函数里for里面的是什么意思,书上说p=pa+col*i是第i行元素的首地址,p<pa+col*(j+1)是j+1行的元素的首地址,但是我怎样看都看不懂请高手说明一下
为什么p=pa+col*i是第i行元素的首地址,p<pa+col*(j+1)是j+1行的元素的首地址

p=pa+col*i是第i行元素的首地址,p<pa+col*(j+1)是j+1行的元素的首地址,那么在这两个地址之间的数据就是从第i行到第j行之间的数据了
数组中的数据在内存中是连续存储的,所以才可以这样操作
另外指针p++表示移动一个整型长度的地址偏移,和一般的i++是不同的

只要注意,里面的的脚标都是从0开始记数的.就是说最左上角那个数是第0行第0列