用一维数组函数输出二位数组的问题
为什么输出一大串垃圾值,是不是指针使用有误,
请各位大侠帮忙看看
#include <stdio.h>
#define COLS 5
void copy_arr(double source[],double target[],int n);
void copy_ptr(double * source ,double * target ,int n);
void print(double [][COLS],int n);
int main(void)
{
double arr[][COLS] = {
{1,2,3,3,5},
{2,5,3,6,8},
{0,7,8,3,2}
};
double target1[3][5];
double target2[3][5];
copy_arr(arr[0],target1[0],3);
print(target1,3);
copy_ptr(* arr,* target2,3);
print(target2,3);
return 0;
}
void copy_arr(double source[],double target[],int n)
{
for(;n>=0;n--)
target[n] = source[n];
}
void copy_ptr(double * source,double * target, int n)
{
for(; n >= 0; n--)
*(target+n) = *(source+n);
}
void print(double arr[][COLS],int n)
{
int i,j;
for( i = 0;i < n; i++)
for( j = 0;j< COLS;j++)
printf("%5.1f",arr[i][j]);
printf("\n");
}
[解决办法]
void copy_arr(double source[],double target[],int n)
{
for(;n>=0;n--)
target[n] = source[n];
}
void copy_ptr(double * source,double * target, int n)
{
for(; n >= 0; n--)
*(target+n) = *(source+n);
}
===>
void copy_arr(double source[],double target[],int n)
{
n--;//add
for(;n>=0;n--)
target[n] = source[n];
}
void copy_ptr(double * source,double * target, int n)
{
n--;//add
for(; n >= 0; n--)
*(target+n) = *(source+n);
}