gpt4 book ai didi

c - 不兼容的参数类型?

转载 作者:行者123 更新时间:2023-12-04 19:54:00 27 4
gpt4 key购买 nike

我想使用另一个函数来打印数组的内容。当我运行代码时,我得到“IntelliSense:类型为“int (*)[3][3]”的参数与类型为“int *(*)[3]”的参数不兼容

这是我的功能:

void display(int *p[N_ROWS][N_COLS]) {
int i, j;
for (i = 0; i < N_ROWS; i++) {
for (j = 0; j <N _COLS; j++) {
printf("%i", p[i][j]);
}
}
}

我定义了 N_ROWSN_COLS在我的 main 函数中,我声明了我的数组,然后调用该函数

{
int Array[N_ROWS][N_COLS] = { {1,2,3},{4,5,6},{7,8,9} };
display(&Array);
}

我的参数类型不是 int(*)[3][3] 还是我遗漏了什么?

最佳答案

display 的原型(prototype)以及调用语法不正确:您定义 display 以获取指向 int 的二维指针数组,而如果 int,您只需要一个二维数组,因为您在 main 中传递一个指向数组的指针,而您只想传递数组,衰减为指向它的指针第一个元素。

这是一个更简单的版本:

void display(int p[N_ROWS][N_COLS]) {
int i, j;
for (i = 0; i < N_ROWS; i++) {
for (j = 0; j < N_COLS; j++) {
printf("%i", p[i][j]);
}
}
}

注意上面的p可以有任意行数,N_ROWS在原型(prototype)中被忽略,相当于void display(int (*p)[ N_COLS]).

另请注意,您的 printf 将输出矩阵值而不进行任何分隔。这可能不是您的本意。

main 开始:

{
int Array[N_ROWS][N_COLS] = { {1,2,3},{4,5,6},{7,8,9} };
display(Array);
}

关于c - 不兼容的参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com