C代码不断闪烁错误,想知道我是否可以在这里得到帮助?
C code keeps flashing errors, wondering if I might get a hand here?
我正在学习 C,我认为我正在坠入爱河,但我新发现的爱在这个简单的(假定的)代码中吓坏了我。我只是想打印一个由整数填充的二维网格。不管我做了什么改变,它总是给出相同的 int
相关错误。有什么帮助吗?
#include <stdio.h>
#include <stdlib.h>
/* malloc_grid - create a 2D array of integers */
int **malloc_grid(int width, int height)
{
int i, j;
int **arr;
if (width < 1 || height < 1)
return (NULL);
arr = (int **)malloc(height * sizeof(int *));
if (arr == NULL)
{
free(arr);
return (NULL);
}
for (i = 0; i < height; i++)
{
arr[i] = (int *)malloc(width * sizeof(int));
if (arr[i] == NULL)
{
for (; i >= 0; i--)
{
free(arr[i]);
}
free(arr);
return (NULL);
}
}
for (i = 0; i < height; i++)
{
for (j = 0; j < width; j++)
arr[i][j] = 0;
}
return (arr);
}
/* main - program entry point */
int main(void)
{
printf("%d", malloc_grid(int 6, int 4));
return 0;
}
我可能做错了什么?
调用函数时无需声明参数类型。
printf("%d", malloc_grid(6,4));
在像 Python 这样的一些高级语言中,你可以在 print
命令中输入你喜欢的任何东西,它会尝试用它做一些有意义的事情。
C 不是这些语言中的一种。你需要更精确。
首先int 6, int 4
没有意义。你的编译器会告诉你这件事。如果这些是您想要的数字,只需写 6, 4
。
其次,%d
是一个需要整数参数的格式说明符。但是您传递的是指向整数指针的指针。同样,这没有任何意义。如果要打印出整个数组,则必须分别打印每个元素。可能是这样的:
int main(void)
{
int i, j, **grid;
grid = malloc_grid(6,4);
if (grid == NULL) {
printf("Memory allocation error\n");
return 1;
}
for (j=0; j<4; j++) {
for (i=0; i<6; i++) {
printf("%3d ", grid[j][i]);
}
printf("\n");
}
return 0;
}
我正在学习 C,我认为我正在坠入爱河,但我新发现的爱在这个简单的(假定的)代码中吓坏了我。我只是想打印一个由整数填充的二维网格。不管我做了什么改变,它总是给出相同的 int
相关错误。有什么帮助吗?
#include <stdio.h>
#include <stdlib.h>
/* malloc_grid - create a 2D array of integers */
int **malloc_grid(int width, int height)
{
int i, j;
int **arr;
if (width < 1 || height < 1)
return (NULL);
arr = (int **)malloc(height * sizeof(int *));
if (arr == NULL)
{
free(arr);
return (NULL);
}
for (i = 0; i < height; i++)
{
arr[i] = (int *)malloc(width * sizeof(int));
if (arr[i] == NULL)
{
for (; i >= 0; i--)
{
free(arr[i]);
}
free(arr);
return (NULL);
}
}
for (i = 0; i < height; i++)
{
for (j = 0; j < width; j++)
arr[i][j] = 0;
}
return (arr);
}
/* main - program entry point */
int main(void)
{
printf("%d", malloc_grid(int 6, int 4));
return 0;
}
我可能做错了什么?
调用函数时无需声明参数类型。
printf("%d", malloc_grid(6,4));
在像 Python 这样的一些高级语言中,你可以在 print
命令中输入你喜欢的任何东西,它会尝试用它做一些有意义的事情。
C 不是这些语言中的一种。你需要更精确。
首先int 6, int 4
没有意义。你的编译器会告诉你这件事。如果这些是您想要的数字,只需写 6, 4
。
其次,%d
是一个需要整数参数的格式说明符。但是您传递的是指向整数指针的指针。同样,这没有任何意义。如果要打印出整个数组,则必须分别打印每个元素。可能是这样的:
int main(void)
{
int i, j, **grid;
grid = malloc_grid(6,4);
if (grid == NULL) {
printf("Memory allocation error\n");
return 1;
}
for (j=0; j<4; j++) {
for (i=0; i<6; i++) {
printf("%3d ", grid[j][i]);
}
printf("\n");
}
return 0;
}