#include
void copy_ptr(double(*target)[], double(*source)[], int n);
void show_arr(const double(*target)[], int n);
int main(void)
{
double source[5][5] =
{
{1.1,2.2,3.3,4.4,5.5},
{1.1,2.2,3.3,4.4,5.5},
{1.1,2.2,3.3,4.4,5.5},
{1.1,2.2,3.3,4.4,5.5},
{1.1,2.2,3.3,4.4,5.5}
};
double target[5][5];
copy_ptr(target, source, 5);
show_arr(target, 5);
return 0;
}
void copy_ptr(double(*target)[], double(*source)[], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
(*target + i)[j] = (*source + i)[j];
}
}
void show_arr(const double(*target)[], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%g ", (*target + i)[j]);
putchar('\n');
}
}
要改成
(*target + i * n)[j] = (*source + i * n)[j];
因为是二维数组,指针要加i * n,不然访问的还是第一层的数组。