C++ 查找双*数组C+的大小+;
如果我声明了一个C++ 查找双*数组C+的大小+;,c++,c,arrays,double,C++,C,Arrays,Double,如果我声明了一个double*positions[2]数组,有没有办法找到double*positions[2]数组的实际大小 是否有类似的sizeof函数来查找大小 我尝试了一个示例,但它没有返回大小为4 为什么不使用sizeof? 表情 sizeof( positions ) 将以字节为单位返回数组的大小,该大小等于do2*sizeof(double*) 或者您可以使用标准类std::extent来确定数组中元素的数量。比如说 std::cout << std::extent&
double*positions[2]
数组,有没有办法找到double*positions[2]
数组的实际大小
是否有类似的sizeof
函数来查找大小
我尝试了一个示例,但它没有返回大小为4
为什么不使用
sizeof
?
表情
sizeof( positions )
将以字节为单位返回数组的大小,该大小等于do2*sizeof(double*)
或者您可以使用标准类std::extent
来确定数组中元素的数量。比如说
std::cout << std::extent<decltype( positions )>::value << std::endl;
那你应该写
double positions[5][2] =
{
{ 0.1, 2.5 },
{ 10.0, 56.7 },
{ 12.4, 20.1 },
{ 69.9, 69.9 },
{ 72.1, 45.0 }
};
在这种情况下,sizeof(positions)
将等于5*2*sizeof(double)
或
等于5和
sizeof( *position ) / sizeof( **positions )
将等于2此操作不需要任何代码。数组的长度为
2
。这在编译时就知道了。不,我是说指针数组中存储的元素数。那你为什么不这么问?答案是,如果您只有一个指向数组的指针,则无法找到动态分配数组中有多少个元素。我想问你的问题是,为什么你觉得有必要打电话给new[]
。通过使用标准容器,您可以避免所有这些问题。实际上,看看您的代码,我想知道您期望的coord[2]
和coord[3]
是什么意思。您这样声明了coord
double*cord[2]
。你明白那句话中的2
是什么意思吗。换句话说,如果要使用4个元素,为什么要保留2个?那么如果double
数组有5组x,y
坐标,sizeof
将返回5
?@Stu User什么是“x,y坐标集”?!我已经编辑了这个问题,请参考。就像它有5行x,y坐标一样,size of
return 5?@Stu User sizeof操作符返回数组的大小(以字节为单位)。它不计算例如一个数组有5个double类型的元素,那么操作符将返回5*sizeof(double)。如果需要知道数组中的元素数,应该使用表达式sizeof(array)/sizeof(double)或class std:;如我所示的范围。谢谢,所以我需要执行sizeof(positions)/sizeof(double)
来获取元素的数量?
sizeof( position ) / sizeof( *positions )
sizeof( *position ) / sizeof( **positions )