指针数组中组件的数目
Number of components in the pointer array
我有一个这样的方法声明:
void createProgram(int32_t dev, int32_t* pixelId, int32_t* vertexId)
如何发现pixelId和vertexId数组中的元素数量?
例如,我试图找出包含以下元素的个数:
sizeof(pixelId)/sizeof(int32_t)
但这不是解决方案,sizeof(pixelId)返回指针的大小。
有其他解决方案吗?
谢谢
根据您的标题,我认为您想要找出在pixelId
和vertexId
参数中传递了多少元素。简而言之,你不能-指针所做的只是说在内存中那个点有int32_t
,而不是有多少。你要么必须:
- 在一个额外参数中指定数组的大小
- 使用像
std::vector
这样的集合封装类来传递它们 - 用一个'magic'数字关闭数组,该数字通常不会在数组中出现,以表示数组的结束。例如,字符串通常是以零结尾的
char*
,这是有效的,因为零字节不是有效的ASCII或Unicode字符。
如果不使用这三种方法中的任何一种,指针只是一个内存地址和它所指向的数据类型的指示,而不是有多少个元素,如果有的话。
你试过:
sizeof(pixelId)/sizeof(int32_t)
由于pixelId
是int32_t*
,它是一个内存指针,根据您是在32位还是64位操作系统上,它是4或8字节。根据定义,sizeof(int32_t)
是4个字节,因此此计算将返回2
或1
,而不是与指针指向的相关的答案。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '