【发布时间】:2022-01-09 08:49:45
【问题描述】:
我正在尝试在辅助函数中初始化矩阵,但在访问辅助函数中的矩阵时收到警告,我无法弄清楚如何修复。我正在阅读有关多维数组的内容,甚至在多个示例中看到了用于传递和访问矩阵的相同表示法,但我的会产生警告,我不太清楚为什么。
据我所知,这个错误意味着参数不是函数所期望的类型,但在将初始化重新定位到它自己的函数之前,我在主函数中使用它很好。这让我认为在将矩阵传递给辅助函数时我做错了。
passing argument 1 of 'memmove' makes pointer from integer without a cast [-Wint-conversion]
这是我的初始化程序代码。 p 是指向要初始化到矩阵中的数组内的数据的指针。我正在使用这种类型的嵌套 for 循环将来自 p 的 16 个字节的数据传播到我的矩阵中,每个单元格 1 个字节。
void initialize(const unsigned char *p, unsigned char (*matrix)[4]) {
for (unsigned int i = 0; i < 4; i++){
for (unsigned int j = 0; j < 4; j++){
memmove(matrix[i][j], p + (4*i+j), 1); <--- Warning here
};
};
};
正在另一个函数中调用初始化,如下所示:
void func(const unsigned char *p) {
unsigned char matrix[4][4] = {
{0x0,0x0,0x0,0x0},
{0x0,0x0,0x0,0x0},
{0x0,0x0,0x0,0x0},
{0x0,0x0,0x0,0x0}
};
initialize(p, matrix);
};
【问题讨论】:
-
考虑
matrix[i][j] = p[4*i+j] -
@Darkonode 显示 p 是如何定义和初始化的。
-
显示您真正想要归档的内容。很难理解
p is a pointer to data inside an array that I want to initialize into my matrix.是什么意思。