1

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

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

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

4

3 回答 3

4

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

于 2013-02-10T17:25:25.137 回答
2

这是 C。在 C 中这不存在。您必须在某个地方记住/存储元素的数量。

于 2013-02-10T17:25:17.680 回答
0
sizeof(arr)/sizeof(unsigned char*)

您可以很容易地将其宏观化为

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

顺便说一句,这仅在您在与数组相同的范围内使用时才有效。如果将数组传递给函数(并且数组降级为指针),这将不起作用。如果将数组传递给函数,则需要传递数字元素,可能还需要传递每个元素的大小。

于 2013-02-10T17:54:47.787 回答