目前我有以下有效的代码:
/*int f_ls(char **buffer, unsigned int max_files);*/
char buffer_tmp[LS_MAX_FILES][MAX_FILENAME_LENGTH];
char *buffer[LS_MAX_FILES];
int i = 0;
while(i < LS_MAX_FILES)
{
buffer[i] = buffer_tmp[i];
i++;
}
int r = f_ls(buffer, LS_MAX_FILES);
然而,这让我开始思考,为什么二维数组在传递给函数时不会像只有一个维度的数组那样隐式退化为指针?
第二个不太有趣的问题:是否有更简洁的方法来完成我所缺少的上述操作?似乎有很多代码只是为了初始化要传递给函数的东西。
在 c++ 中,我相信,你可以用 new 做一些更干净的事情,但这看起来还是有点笨拙。
最佳答案
“二维”数组确实衰减为指针,但它衰减为指向数组的指针:
char (*ptr_to_buffer_tmp)[MAX_FILENAME_LENGTH]
关于c - 将指向静态分配矩阵的指针传递给函数 - c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22197698/