读书人

用一维数组函数输出二位数组的有关问题

发布时间: 2012-09-10 11:02:33 作者: rapoo

用一维数组函数输出二位数组的问题
为什么输出一大串垃圾值,是不是指针使用有误,
请各位大侠帮忙看看

#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);
}

读书人网 >C语言

热点推荐