基本上,在下面的代码中,我有一个初始化二维数组的函数。在main函数中,我尝试用不同大小的数组测试函数。但是,我收到以下错误:"错误:数组类型具有不完整的元素类型 void chessBoard(char board [] [],int length,int width)"和"错误:形式参数1的类型不完整"。 chessBoard(board1,length1,width1);.有什么建议吗?
#include <stdio.h>
#include <stdlib.h>
void chessBoard(char board[][], int length, int width)
{
for (int i = 0; i < length; i++)
{
for (int j = 0; j < width; j++)
if ((i + j) % 2 == 0)
board[i][j] = 'b';
else
board[i][j] = 'w';
}
}
int main()
{
char board1 [3][4];
int length1 = sizeof board1 / sizeof board1[0];
int width1 = sizeof board1[0] / sizeof(int);
chessBoard(board1, length1, width1);
int i, j;
for(i = 0; i < length1; i++)
{
for(j = 0; j < width1; j++)
printf("%c", board1[i][j]);
printf("\n");
}
printf("\n");
}
答案 0 :(得分:0)
你应该声明你的功能:
void chessBoard(char board[][4], int length, int width)
这C FAQ彻底解释了原因。它的要点是数组一旦衰减成指针,它不会递归地发生。数组数组衰变为指向数组的指针,而不是指向指针的指针。根据C标准,您可以将任何维数组传递给函数,只要您将所有维度指定为常量(第一个除外)(可以为空白)。
答案 1 :(得分:0)
你也可以像这样声明你的函数。void chessBoard(char board[][width], int length)
。 int width
是全局变量。
#include <stdio.h>
#include <stdlib.h>
int width;//Global Variable
void chessBoard(char board[][width], int length){
int i,j;
for ( i = 0; i < length; i++){
for ( j = 0; j < width; j++){
if ((i + j) % 2 == 0)
board[i][j] = 'b';
else
board[i][j] = 'w';
}//inner loop end
}//outer loop end
}
int main(){
char board1[3][4];
int length1 = sizeof(board1) / sizeof(board1[0]);
int width1 = sizeof(board1[0]) / sizeof(board1[0][0]);
width = width1;
chessBoard(board1, length1);
int i, j;
for(i = 0; i < length1; i++){
for(j = 0; j < width1; j++)
printf("%c ", board1[i][j]);
printf("\n");
}
printf("\n");
}