不能从int[][]转换为int**
cannot convert from int[][] to int**?
在调用者函数
中有以下代码int matrix[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};
find_index(matrix);
和find_index的原型是:
void find_index(int** m);
和我得到编译错误:不能转换'int(*)[3]'到'int ** '
无论如何我可以解决这个问题?谢谢!
更新:是否有一种方法,我可以在第二个函数中使用m[a][b]运算符,而不是传递列号并执行m[a * col_num + b]?
双索引数组仍然只对应于单个指针,而不是指针指向指针的指针。
在内存中,int**
看起来像
[0] ----> [0] ---> int
[1] ---> int
[2] ---> int
[1] ----> [0] ---> int
[1] ---> int
[2] ---> int
[2] ----> [0] ---> int
[1] ---> int
[2] ---> int
但是int[][]
看起来像
[0][1][2][0][1][2][0][1][2]
(0) (1) (2)
因此,您可以看到对它们进行索引将如何导致不同的事情发生(一个对指针进行解引用,一个执行不同的算术),并且它们是不兼容的。尝试索引int[][]
,如int**
,将导致您正在存储的整数之一被解引用,导致未定义行为。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度