请教一下关于对二维数组使用指针的问题,如下列代码43行,为什么要在(t+i)与(s+i)前面加*符号?在这段代码中t和s指的是什么?换句话说格式如type (*ptr)[n]这样的指针应该怎么理解?它指的是一个指针的地址吗?有点没弄明白这个逻辑问题,求解答。
代码原意是把source二维数组的数据复制进target数组。
#include<stdio.h>
#define ROWS 5
#define COLS 12
void copy_ptr(double t[],double s[],int n);
void copy_2d_ptr(double (*t)[COLS],double (*s)[COLS],int n);
int main(void)
{
double source[ROWS][COLS]={
{1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2},
{3.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2},
{5.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2},
{7.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2},
{9.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2}
};
double target[ROWS][COLS];
copy_2d_ptr(target,source,ROWS);
for(int i=0;i<ROWS;i++)
{
for(int j=0;j<COLS;j++)
{
printf("%5.2f",target[i][j]);
}
printf("\n");
}
return 0;
}
void copy_ptr(double *t,double *s,int n)
{
int i=0;
for(i=0;i<n;i++)
{
*(t+i)=*(s+i);
}
}
void copy_2d_ptr(double (*t)[COLS],double (*s)[COLS],int n)
{
int i;
for(i=0;i<n;i++)
{
copy_ptr(*(t+i),*(s+i),COLS);
}
}