【发布时间】:2021-02-15 17:15:36
【问题描述】:
我试图通过使用 current_menu 变量来查找 menu1 数组中的元素数,但我没有得到任何结果。我迷失在指针初始之类的事情中......
const char *menu1[] = { "Menu title", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9" };
const char * *current_menu = menu1;
我试过了:
sizeof(*current_menu) / sizeof(*current_menu[0])
sizeof(*(*current_menu)) / sizeof(*(*current_menu)[0])
但是没有任何效果...我该怎么做?
任何帮助将不胜感激!
【问题讨论】:
-
由于指针的工作方式,您无法通过这种方式获取数组中的元素数量。出于这个原因,C API 通常会存储数组的指针和大小。但是您已将这个问题标记为 C++,因此您应该尝试改用
std::array或std::vector。对于std::array,大小是类型的一部分,std::vector有一个size成员函数。 -
@churill 确实如此,但我无法理解解释(对不起)......我不确定我是否理解如何编码。
-
理解这一点的第一步可能是在心理上分离指针和数组。指针可以指向任何地方。例如数组的第一个元素。或者到第二个元素,或者在数组的中间,或者到单个值。或在随机位置或什么都没有(
nullptr)。sizeof在编译时进行评估。指针的大小在编译时是固定的,无论它在运行时指向哪里。