c - 尝试将二维数组传递给函数但收到错误 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,所以对于我的代码中的任何错误,我深表歉意
解决方案
下面的代码在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);
}