这是一个创建一个充满点的表的程序,但我试图在函数中进行分离。我这样做是因为我将来需要使用变量x和tabuleiro添加更多的函数。我在标题上弄错了,我不明白为什么。你们能帮我吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char tabuleiro_init(int dim, char tabuleiro[15][15]);
int main(int x)
{
printf("Put the dimension of the table: ");
scanf("%d", &x);
char tabuleiro[15][15];
tabuleiro_init(x, tabuleiro[15][15]);
}
char tabuleiro_init(dim, char tabuleiro)
{
if (dim >= 7 && dim <= 15 && dim%2 != 0)
{
for (int i = 0; i < dim; i++)
{
for (int j = 0; j < dim; j++)
{
printf(".", tabuleiro[i][j]);
printf(" ");
}
printf("n");
}
}
}
tabuleiro_init
函数的声明和定义不匹配。
比较
char tabuleiro_init(int dim, char tabuleiro[15][15])
带有
char tabuleiro_init(dim, char tabuleiro)
对于第一个参数,定义中缺少int
。
对于第二个参数,您将其声明为char tabuleiro[][15]
,或指向由15个元素组成的char
数组的指针,但您将其定义为仅为char
。
对于初学者来说,主的声明
int main(int x)
不正确。
像一样声明函数
int main( void )
并且在函数内声明类似的变量CCD_ 6
int x;
在这次通话中
tabuleiro_init(x, tabuleiro[15][15]);
第二个参数是char 类型的数组中不存在的元素
而是写入
tabuleiro_init(x, tabuleiro);
其定义中的函数声明与第一个函数声明不对应
char tabuleiro_init(dim, char tabuleiro)
并且第一个参数没有类型说明符。
函数的返回类型char
也没有意义,而且函数什么也不返回。
因此,至少在这两种情况下使用以下函数声明
void tabuleiro_init(int dim, char tabuleiro[15][15])
在这次打印的调用中
printf(".", tabuleiro[i][j]);
没有使用第二个参数。也许你只是指
printf("." );
(这并不重要(或
printf(".%c", tabuleiro[i][j]);
但在最后一种情况下,必须先初始化数组,然后再将其传递给函数。