将多维数组传递给函数

时间:2013-11-30 18:12:29

标签: c arrays multidimensional-array

程序的目的是将数据从1个数组发送到另一个数组我不知道我传递的方式有什么问题。它应该输入1个数组中的数据然后调用copy函数并将其自身放在那里然后遍历数组。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
#include<math.h>
#include<ctype.h>
#include<stdbool.h>


double copy_arr(double source[n][u],double target[n][u],int n,int u);

int main(void)
{
    double source[3][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 target1[3][5];


    copy_arr(source,target1,3,5);

    int j;
    int i;
    for(i=0;i<3;i++)
    {
        for(j=0;j<5;j++)
        {
        printf("%f 1",target1[i][j]);

        }
    }



    return 0;
}

double copy_arr(double source[][],double target[][],int n,int u)
{
    int i,j;
    for(i=0;i<n;i++)
    {
       for(j=0;j<u;j++)
       {
          target[i][j] = source[i][j];
       }
    }

    return target[n][u];
}

2 个答案:

答案 0 :(得分:3)

你的函数原型是错误的,因为编译器还没有看到nu。你的程序甚至没有编译。 改变

 double copy_arr(double source[n][u],double target[n][u],int n,int u);  

 double copy_arr(int n,int u,double source[n][u],double target[n][u]);

答案 1 :(得分:0)

或者你可以做硬编码的数组

#define SIZE_ARR 5

void copy_arr(double source[][SIZE_ARR], double target[][SIZE_ARR], int n, int u);

int main(void)
{
    double source[3][SIZE_ARR]={{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 target1[3][SIZE_ARR];


    copy_arr(source,target1, 3, 5);

    int j;
    int i;
    for(i=0;i<3;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%f 1",target1[i][j]);
        }
    }

    return 0;
}

void copy_arr(double source[][SIZE_ARR], double target[][SIZE_ARR], int n, int u)
{
    int i,j;
    for(i=0;i<n;i++)
    {
       for(j=0;j<u;j++)
       {
          target[i][j] = source[i][j];
       }
    }
}