c++ - 声明 char[][512]?

标签 c++ arrays multidimensional-array

我有一个 C++ SDK,它需要一个 char[][512] 作为参数。我知道这应该是一个文件名列表,文件的数量可能会有所不同。对于我的生活,我无法弄清楚如何声明这一点。我有一个 CString 数组,我正在尝试使用 strcpy_s 复制它们,然后将它们传递到 SDK 中。关于如何执行此操作的任何想法?

最佳答案

当用于声明函数的参数时,此声明具有特殊含义。在参数列表中,它等同于 char[100][512]char[123][512]char[3][512](你明白了 - 第一个大小可以是任何大小,它被忽略)以及 char (*)[512]。实际上,它将接受第一个大小灵活(任意)的二维字符数组作为参数。

例如,您实际传递给此函数的数组应使用具体的第一个大小声明

char names[3][512] = { "abc", "cde", "fgh" };

当然,如果您在编译时知道第一个大小。

如果第一个大小仅在运行时已知(例如,n),则必须动态分配数组

char (*names)[512] = new char[n][512];
// Now fill it with names

或者,更优雅地,使用 typedef

typedef char TName[512];
TName* names = new TName[n];
// Now fill it with names

我希望您所说的 SDK 函数还要求您将名称数组的第一个大小作为另一个参数传递。

关于c++ - 声明 char[][512]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580935/

相关文章:

c++ - 如何为 Boost.Asio 设计自定义 IO 对象

c++ - 对指针 vector 进行排序工作一次然后崩溃 "unable to read memory"

C++编程数组以查找范围内的整数个数

arrays - MATLAB 是否提供了一种更优雅的方法来遍历 3D 数组以获得 3 维向量?

python - 查找多维数组中所有 "neighbors"的元素,环绕边界

python - 为什么 3d 数组的打印结果与 python 中相同的心理可视化不同?

c++ - Top Down Shooter 中 0x000FBA44 处的未处理异常

c++ - Debian 上的 qt ./configure

C 在动态二维字符数组中插入字符串或(char*),段错误

javascript - 使用从 href 获得的 ID 数组来定位元素