c - 如何在函数 max_2d 中修复此参数?从 const int 到 int 的转换是错误
问题描述
我试图在多维数组中找到最大的数字,但 Visual Studio 在成功编译代码时遇到问题。
当我使用参数作为循环的int
限制时,它的转换存在问题。它无法从循环与参数进行比较。任何人都可以帮忙吗?const int *
size
for
int i
for
size
这是错误列表:https ://imgur.com/a/HcNqgmx
int max_2d(const int size[], int array[][size]) {
if (array == NULL) return -1;
int max = array[0][0];
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (max < array[i][j]) max = array[i][j];
}
}
return max;
}
int main() {
int array[2][2] = { {1,2},{0,-3} };
printf("%d\n", max_2d(2, array));
return 0;
}
在这种状态下,我期望输出返回最大值(其中最大值是最大数)= 2。
解决方案
函数的第一个参数const int size
,应该是一个数字而不是一个数组,所以它应该被声明为const int size
。arr[][]
此外,此代码将起作用,但它在逻辑上不正确,因为应该知道数组 ( ) 的第二个索引,但在这里您将其传递为arr[][size]
. 这是一个静态内存分配。编译器应该知道在编译时声明的所有变量的大小。
推荐阅读
- ios - 从通知打开应用程序时不清除所有通知
- python - 在 jupyter 中使用时,在 python 类上找不到 __init__
- docker - 在 google cloud run 上部署示例时发生无效的 ENTRYPOINT 错误
- sql - 不支持过滤器或函数中的 Varbinary/Blob
- sql - 如何从查询中获取正确的 SQL 结果
- django - 在 Django 中提交表单不执行正确的功能
- flutter - 流行度百分比数字在 pubdev 中的工作原理是什么?
- ansible - ansible-galaxy - 指定要安装的版本范围
- google-cloud-platform - 单个 GCE 实例上的多个出站 IP
- linux-kernel - 移除单个 BPF 过滤器