这是关于我代码底部的 setCheckInTable 函数。它不会用 -1s 填充整个二维数组,它只是循环两次
This is about the setCheckInTable function at the bottom of my code. It does not populate the entire 2D array with -1s it just loop twice
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
这是主要函数,它不允许我设置充满 -1 的数组我想用调用函数 setCheckInTable() 填充数组;但它没有超过 checkInTable[0][1] 我现在心情不好
int main()
{
int checkRow = 5;
int checkCol = 2;
int checkInTable[checkRow][checkCol];
setCheckInTable(checkInTable, checkRow, checkCol)
return 0
}
这是功能不正常
void setCheckInTable(int** arr, int rows, int cols){
int i, j;
for(i = 0; i < rows; i++)
{
for(j = 0; j < cols; j++)
{
arr[i][j] = -1;
printf("This is i: ");
printf("%d \n", i);
printf("This is j: ");
printf("%d \n", + j);
}
}
}
您将数组与指针混淆了。
虽然在某些情况下数组可以衰减为指针,但它们仍然非常不同:
int[x][y]
类型的对象将占用大小为 x*y*sizeof(int)
.
的内存
int**
类型的对象只会消耗指针大小的内存。
您需要修复函数签名并提供原型:
#include <stdio.h>
void setCheckInTable(int rows, int cols, int arr[][cols]);
int main()
{
int checkRow = 5;
int checkCol = 2;
int checkInTable[checkRow][checkCol];
setCheckInTable(checkRow, checkCol, checkInTable);
return 0;
}
void setCheckInTable(int rows, int cols, int arr[][cols])
{
int i, j;
for(i = 0; i < rows; i++)
{
for(j = 0; j < cols; j++)
{
arr[i][j] = -1;
printf("This is i, j: %d %d\n", i, j);
}
}
}
输出:
$ gcc -o test test.c -Wextra -Wall
<no errors or warnings>
$ ./test
This is i, j: 0 0
This is i, j: 0 1
This is i, j: 1 0
This is i, j: 1 1
This is i, j: 2 0
This is i, j: 2 1
This is i, j: 3 0
This is i, j: 3 1
This is i, j: 4 0
This is i, j: 4 1
$
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
这是主要函数,它不允许我设置充满 -1 的数组我想用调用函数 setCheckInTable() 填充数组;但它没有超过 checkInTable[0][1] 我现在心情不好
int main()
{
int checkRow = 5;
int checkCol = 2;
int checkInTable[checkRow][checkCol];
setCheckInTable(checkInTable, checkRow, checkCol)
return 0
}
这是功能不正常
void setCheckInTable(int** arr, int rows, int cols){
int i, j;
for(i = 0; i < rows; i++)
{
for(j = 0; j < cols; j++)
{
arr[i][j] = -1;
printf("This is i: ");
printf("%d \n", i);
printf("This is j: ");
printf("%d \n", + j);
}
}
}
您将数组与指针混淆了。
虽然在某些情况下数组可以衰减为指针,但它们仍然非常不同:
int[x][y]
类型的对象将占用大小为 x*y*sizeof(int)
.
的内存
int**
类型的对象只会消耗指针大小的内存。
您需要修复函数签名并提供原型:
#include <stdio.h>
void setCheckInTable(int rows, int cols, int arr[][cols]);
int main()
{
int checkRow = 5;
int checkCol = 2;
int checkInTable[checkRow][checkCol];
setCheckInTable(checkRow, checkCol, checkInTable);
return 0;
}
void setCheckInTable(int rows, int cols, int arr[][cols])
{
int i, j;
for(i = 0; i < rows; i++)
{
for(j = 0; j < cols; j++)
{
arr[i][j] = -1;
printf("This is i, j: %d %d\n", i, j);
}
}
}
输出:
$ gcc -o test test.c -Wextra -Wall
<no errors or warnings>
$ ./test
This is i, j: 0 0
This is i, j: 0 1
This is i, j: 1 0
This is i, j: 1 1
This is i, j: 2 0
This is i, j: 2 1
This is i, j: 3 0
This is i, j: 3 1
This is i, j: 4 0
This is i, j: 4 1
$