void print( matrix)
{
printf(" 0 1 2 3 4 5 6 7 \n"); /* printing the game board */
printf(" ------------------------------------- \n");
for (int i = 0; i < 8; i++)
{
printf("%d|", i);
for (int j = 0; j < 8; j++)
{
printf(" %3c ", matrix[i][j]);
}
printf("\n");
}
}
所以我在编译器中定义了这个函数,运行代码并为此行printf(" %3c ",matrix[i][j]);
下标值既不是数组也不是指针,也不是向量
我尝试将matrix
定义为int和char值,但仍然是相同的错误
还有一件事是代码本身没有功能而没有问题
调用函数: 首先我定义了
char playboard[8][8];
然后使用符号&#34;〜&#34;
填充数组for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
playboard[i][j] = '~';
}
}
然后调用函数print
print(playboard);
答案 0 :(得分:4)
你可能想要这个:
void print(char matrix[8][8])
{
printf(" 0 1 2 3 4 5 6 7\n"); /* printing the game board */
printf(" -------------------------------------\n");
for (int i = 0; i < 8; i++)
{
printf("%d|", i);
for (int j = 0; j < 8; j++)
{
printf(" %3c ", matrix[i][j]);
}
printf("\n");
}
}
答案 1 :(得分:1)
除了迈克尔的答案,你应该将数组的大小传递给函数以使其可移植。使用sizeof
查看这个简单的示例#include <stdio.h>
#include <string.h>
void print(size_t rows, size_t cols, char matrix[rows][cols])
{
printf(" 0 1 2 3 4 5 6 7\n"); /* printing the game board */
printf(" -------------------------------------\n");
for (size_t i = 0; i < rows; i++)
{
printf("%zu|", i);
for (size_t j = 0; j < cols; j++)
{
printf(" %3c ", matrix[i][j]);
}
printf("\n");
}
}
int main (void)
{
char playboard[8][8];
memset(playboard, 0x7E, sizeof(playboard));
print(sizeof(playboard[8]), sizeof(playboard[0])/sizeof(playboard[0][0]), playboard);
}