-1

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

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

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

例如,我试图找出包含的元素数量:

sizeof(pixelId)/sizeof(int32_t)

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

还有其他解决方案吗?

谢谢

4

1 回答 1

3

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

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

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

你试过:

sizeof(pixelId)/sizeof(int32_t)

因为pixelIdis a int32_t*,所以它是一个内存指针,根据您是在 32 位还是 64 位操作系统上,它是 4 字节还是 8 字节。sizeof(int32_t)根据定义是 4 个字节,因此该计算将返回2或,但不会返回与指针指向的内容1相关的答案。

于 2013-05-24T10:35:38.217 回答