指针数组中组件的数目

Number of components in the pointer array

本文关键字:组件 数组 指针      更新时间:2023-10-16

我有一个这样的方法声明:

void createProgram(int32_t dev, int32_t* pixelId, int32_t* vertexId)

如何发现pixelId和vertexId数组中的元素数量?

例如,我试图找出包含以下元素的个数:

sizeof(pixelId)/sizeof(int32_t)

但这不是解决方案,sizeof(pixelId)返回指针的大小。

有其他解决方案吗?

谢谢

根据您的标题,我认为您想要找出在pixelIdvertexId参数中传递了多少元素。简而言之,你不能-指针所做的只是说在内存中那个点有int32_t,而不是有多少。你要么必须:

  1. 在一个额外参数中指定数组的大小
  2. 使用像std::vector这样的集合封装类来传递它们
  3. 用一个'magic'数字关闭数组,该数字通常不会在数组中出现,以表示数组的结束。例如,字符串通常是以零结尾的char*,这是有效的,因为零字节不是有效的ASCII或Unicode字符。

如果不使用这三种方法中的任何一种,指针只是一个内存地址和它所指向的数据类型的指示,而不是有多少个元素,如果有的话。

你试过:

sizeof(pixelId)/sizeof(int32_t)

由于pixelIdint32_t*,它是一个内存指针,根据您是在32位还是64位操作系统上,它是4或8字节。根据定义,sizeof(int32_t)是4个字节,因此此计算将返回21,而不是与指针指向的相关的答案。