c - 将指向静态分配矩阵的指针传递给函数 - c

标签 c arrays function initialization

目前我有以下有效的代码:

/*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/

相关文章:

r - 利用回收将不同长度的列表转换为数据帧的功能

在c中将字符串转换为int

c - 高斯消除期间段错误(核心转储)

c++ - 将二维数组打印为 C++ 中的方法

ruby - 按内容计算的最大值对数组排序

c++ - 使用插入排序 C++

c - 有没有办法找到最接近的 int 的 2 个整数因子?

c - 如何在没有 GPU 的情况下加快 Arm 上 Gtk2+ 的 Cairo 绘画速度

c - strcat 和返回错误的差异

c - C 中不兼容的指针类型。 C 数组和指针