我有5个数组和一个指针数组,我需要知道指针数组中每个数组的长度(不是sizeof)。 我是怎么做到的?
./program.awk
答案 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)
你拥有的是指向数组第一项的指针。由此,无法确定阵列的长度。
您还必须跟踪长度。