有没有办法获得char array
的列数?
声明如下:static const char *countries[][2] = { ... };
但我想动态地获取它,所以不用自己输入'2'
答案 0 :(得分:1)
不,你必须将数据与数组一起传递。可能存在依赖于系统/编译器/库的方式,但依赖这些功能并不是一个好主意。
如果您使用的是C ++标准库,则最好使用std::vector
,其中包含更多元数据,例如您感兴趣的size()
。
答案 1 :(得分:0)
当然可以。可以使用sizeof
运算符轻松检查静态初始化的数组。以下代码段(在C中)打印与2D指针数组相关的所有大小。
#include <stdio.h>
static const char *countries[][2] = { { "dfdf", "dss" }, { "ss"}, { "toto"}};
int main(void) {
printf("dim0 %zu, dim1 %zu, elements %zu\n",
sizeof countries/sizeof countries[0],
sizeof countries[0]/sizeof countries[0][0],
sizeof countries/sizeof countries[0][0]
);
}