如何知道指针数组中指针的长度是多少?

时间:2017-04-05 14:43:52

标签: c arrays pointers

我有5个数组和一个指针数组,我需要知道指针数组中每个数组的长度(不是sizeof)。 我是怎么做到的?

./program.awk

3 个答案:

答案 0 :(得分:1)

一旦将数组转换为指针(就像数组arr6的元素一样),就无法找到其中的元素数(在原始数组中) 。 简化版本是:

int arr1[] = { 3, 9, 6, 7 };
int *p = arr1;
/* Now, there's no way to know the number of elements in arr1 solely
   from the pointer 'p' */

您自己保留尺寸信息。一种方法是为大小设置另一个数组:

int* arr6[] = { arr1, arr2, arr3, arr4, arr5 };
size_t sz_arr6[] = {sizeof arr1/sizeof arr1[0], sizeof arr2/sizeof arr2[0], ...};

您知道这个索引,您知道sz_arr6[i]对应arr6[i]中的元素数量,依此类推。

答案 1 :(得分:0)

在C ++ 17中,很容易:std::size(arr),来自<iterator>

在此之前,请使用std::distance(std::begin(arr), std::end(arr))(使用相同的标题)。

答案 2 :(得分:0)

你拥有的是指向数组第一项的指针。由此,无法确定阵列的长度。

您还必须跟踪长度。