首页 > 解决方案 > 尝试将二维数组传递给函数但收到错误 C2466

问题描述

我一直在尝试解决老师传递的关于向量和指针的问题,但由于某种原因,我一直收到错误“错误 C2466”。我也尝试从这个网站复制代码,但我收到了同样的错误。

#include <stdio.h>
int static MAX = 3;

void bigger(int A[MAX][MAX], int n){
    /*int *k, *Lin, *Col;
    for (int i=0; i<MAX; i++ )
        for (int j=0; j<MAX; j++ )
        {
            printf("%d",A[i][j]);
        }*/
}

int main() {
    int A[3][3],z=0;

    for (int i=0; i<3; i++ )
        for (int j=0; j<3; j++ )
        {
            A[i][j] = z;
            z++;
        }
    bigger(A,3);
}

我正在学习 C,所以对于我的代码中的任何错误,我深表歉意

标签: cvector

解决方案


下面的代码在int A[MAX][MAX]. 可变长度数组 (VLA) 和朋友是在 C99 中引入的。

int static MAX = 3;
void bigger(int A[MAX][MAX], int n){

错误 C2466表示 MS C 编译器。MS C 编译器还不兼容 C99,因此出现错误。

使用现代 C 编译器或不使用 VLA。


下面是在 Windows 操作系统机器上编译的示例 VLA 使用代码,但不是使用 MS C 编译器。

#include <stdio.h>
#define N 3

void bigger(int n, int A[n][n]) {
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      printf("%d", A[i][j]);
    }
}

int main() {
  int A[N][N], z = 0;

  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++) {
      A[i][j] = z;
      z++;
    }
  bigger(3, A);
}

推荐阅读