我有一个 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/