c - 下面的代码有什么问题吗?出现错误 : Add is not a func or pointer

标签 c function matrix multidimensional-array

只有矩阵第一行的值通过 Add() 传递。我得到了错误的结果。例如:矩阵 1 有元素 1,2,3,4 。但是,当我在 add() 中打印这些值时,我我得到 1,2,0,0。

#include <stdio.h>

int main()
{
    int arr[100][100], arr1[100][100];

    int m, n, x, y, z;

    printf("\n Enter order of matrix");
    scanf("%d %d ", &m, &n);

    //ENTRY OF MATRIX

    printf("\n Enter Values of Matrix 1");
    for (x = 0; x < m; x++)
    {
        for (y = 0; y < n; y++)
            scanf("%d ", &arr[x][y]);
    }

    printf("\n Enter Value of Matrix two ");
    for (x = 0; x < m; x++)
    {
        for (y = 0; y < n; y++)
            scanf("%d ", &arr1[x][y]);
    }

    add(m, n, arr, arr1);

    return 0;
}

void add(int m, int n, int a[m][n], int b[m][n])
{   
    int x, y;
    for (x = 0; x < m; x++)
    {
        for (y = 0; y < n; y++)
            printf("%d     ", a[x][y]);
        printf("\n");
    }
}

最佳答案

在 C 语言中,函数必须在使用前声明,并且声明和调用之间参数的类型必须匹配。

在OP的代码中,几个二维数组声明为

int arr[100][100];

传递给在main()之后定义的函数为

void add(int m, int n, a[m][n], b[m][n]) { /* ... */ }  

生成两个问题:

  • add()main() 中使用,但之前没有声明,仅在之后定义。
  • arrarr1 是 100 x 100 int 的二维数组,但函数 add() 为编写,接受两个大小为 m x n 的可变长度数组。

OP 有两种修复方法,要么更改函数的接口(interface)并在 main() 之前声明它,如下所示:

void add(int m, int n, a[][100], b[][100]);  // and define after main

或者更改arrarr1的声明:

// includes...

void add(int m, int n, a[m][n], b[m][n]);  

int main(void)
{
    int m, n;
    // ...
    // read n and m before using them to declare the two VLA
    int arr[m][n], arr1[m][n];

    // ...

    add(m, n, arr, arr1);

    // ...
}

void add(int m, int n, a[m][n], b[m][n])
{
    // ... 
}  

关于c - 下面的代码有什么问题吗?出现错误 : Add is not a func or pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255672/

相关文章:

python - 递增 Py_True/Py_False refcount 总是必要的吗?

sql-server - "Adding a value to a ' 日期时间 ' column caused an overflow."

iOS 从另一个 View 跳过方法调用

Java:缓存计算结果?

C++ 类转换运算符

c - 栈、堆中的内存是如何排列的?

C 宏 : Select macro using concatenation of string and number

c++ - 多次使用 strtok_s

c++ - 编译器确定给出或省略参数

python - Python 中的 Sigma 表示法