Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将多维数组传递给函数_C_Arrays_Multidimensional Array - Fatal编程技术网

C 将多维数组传递给函数

C 将多维数组传递给函数,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,该程序的目的是将数据从一个数组发送到另一个数组。我不确定我传递数据的方式有什么问题。它应该在1个数组中输入数据,然后调用copy函数并将自己放在那里,然后遍历数组 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<limits.h> #include<math.h> #include<ctype.h> #include<stdbool.h&

该程序的目的是将数据从一个数组发送到另一个数组。我不确定我传递数据的方式有什么问题。它应该在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];
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
双复制(双源[n][u],双目标[n][u],整数n,整数u);
内部主(空)
{
双源[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}};
双目标1[3][5];
副本_arr(来源,目标1,3,5);
int j;
int i;

对于(i=0;i您的函数原型是错误的,因为编译器还没有看到
n
u
。您的程序甚至没有编译。 改变

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


或者你可以做硬编码数组大小

#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];
       }
    }
}
#定义尺寸#ARR 5
无效复制(双源[][SIZE\u arr],双目标[][SIZE\u arr],整数n,整数u);
内部主(空)
{
双源[3][SIZE_ARR]={{1.1,2.2,3.3,4.4,5},
{1.1,2.2,3.3,4.4,5.5},
{1.1,2.2,3.3,4.4,5.5}};
双目标1[3][SIZE_ARR];
副本_arr(源、目标1、3、5);
int j;
int i;

对于(i=0;ithanks:D我认为这不重要,因为它在一维数组中是这样工作的,但在二维数组中就是这样。:DActuall only
u
需要在数组声明之前查看,因为前导数组维度不是变量数组参数类型的一部分。这也是为什么它在一维数组中“工作”…@Chr是的,你是对的。这对于
source[][u]
很好。但是对于
source[n][u]
n
当时编译器也看不到,这就是为什么你需要传递它。我从未在C中看到过这种类型的函数原型!!我认为多维数组必须指定列而不是行,不是吗?@haccks谢谢,我今天没醒:-)
#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];
       }
    }
}