如何获取unsigned char *数组中的元素数?

时间:2013-02-10 17:23:13

标签: c

我有一个函数,它接收指向不同数组的指针,如下所示:

    unsigned char *arr[] = {0x34, 0x10, 0x3f, 0x00, 0x00 }

我想知道我的函数得到的每个数组中有多少个元素(字节)。例如,我需要一种方法来发现这个数组有5个字节。我把它传递给一个函数来打印数组的值。 Sizeof(arr)没有给我正确的结果。

3 个答案:

答案 0 :(得分:4)

除非你使用像“数组是空终止的”这样的约定(比如名义上的C字符串),否则你无法在运行时确定数组的大小。你所拥有的只是一个指针。

答案 1 :(得分:2)

这是C.而在C中这不存在。你必须记住/存储元素的数量。

答案 2 :(得分:0)

sizeof(arr)/sizeof(unsigned char*)

您可以轻松地将其宏观化为

#define ARRAY_LENGTH(_array_)    (sizeof(_array_) / sizeof(_array_[0])

顺便说一下,只有在与数组相同的范围内使用它时才会有效。如果将数组传递给函数(并且数组降级为指针),则无效。如果将数组传递给函数,则需要传递数字元素,并可能传递每个元素的大小。