【问题标题】:C find static array sizeC查找静态数组大小
【发布时间】:2012-05-04 05:33:40
【问题描述】:
static char* theFruit[] = {
    "lemon",
    "orange",
    "apple",
    "banana"
};

通过查看这个数组,我知道大小是 4。如何以编程方式在 C 中找到这个数组的大小?我不想要以字节为单位的大小。

【问题讨论】:

    标签: c arrays static


    【解决方案1】:
    sizeof(theFruit) / sizeof(theFruit[0])
    

    注意sizeof(theFruit[0]) == sizeof(char *),一个常量。

    【讨论】:

    • 是的,就是这样。这就是他得到+1的原因.... :-)。但只有数组,正如你在你的问题中所说的那样。不用指针。
    • @eat_a_lemon:取决于您对每种情况的称呼:) 它适用于静态和自动数组,而不适用于 malloc'd 数组。请注意,数组的大小始终是第一个元素大小的倍数,因此可以保证除法有效,并且sizeof 仅查看类型,因此它甚至适用于零元素的数组。
    • 我想我很困惑的是条目是可变大小的,因为它们是字符串。
    • @eat_a_lemon:条目不是字符串;他们是char*s 指向字符串。
    【解决方案2】:

    请改用 const char*,因为它们将存储在只读位置。并获得数组的大小 unsigned size = sizeof(theFruit)/sizeof(*theFruit); *theFruit 和 theFruit[0] 都是一样的。

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多