arrays - 从不兼容的指针类型传递 'functionName'的参数1

标签 arrays c pointers multidimensional-array compiler-errors

我正在尝试创建一个更改2d数组并将其保存更改的函数
该代码正在运行,但是出现有关指针的警告,并且我不知道如何使用我的C语言基础知识来绕过它

#include <stdio.h>
int size = 0;

void functionName(char (*tab)[size][size]) {
    for(int i = 0; i < size; i++) {
        for(int j = 0; j < size; j++) {
            (*tab)[i][j] = (*tab)[i][j]-'0';
        }
    }
}

int main() {
    scanf("%d", &size);
    char tab[size][size];
    for(int i = 0; i < size; i++) {
        for(int j = 0; j < size; j++) {
            scanf("%c", &tab[i][j]);
        }
    }
    functionName(tab);

    return 0;
}

最佳答案

发生此错误是因为当作为参数传递时char tab[][]衰减为char (*)[],与functionName期望的类型不匹配。要解决不一致问题,请执行以下任一操作:

  • 通过调用tab来将char (*)[][]作为functionName(&tab)传递;
  • 或将functionName的参数类型更改为void functionName(char tab[size][size]),并修复函数内部的代码以使用tab[i][j]而不是(*tab)[i][j]
  • 关于arrays - 从不兼容的指针类型传递 'functionName'的参数1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64841305/

    相关文章:

    C++将指向当前对象的指针传递给函数

    c - C中函数指针数组的数组

    c - libxml xmlXPathEvalExpression顺序

    php - 将 php foreach 循环存储在字符串中

    objective-c - C 将函数调用作为变量传递

    c - 如何创建新的转义序列?

    c++ - 在给定指向该元素的指针的情况下获取双端队列中元素的索引?

    c++ - 将 2D 数组传递给 C++ 函数

    arrays - 在数组中查找峰值元素的最佳算法

    php - 使用 foreach 预览下一个数组元素