2014-12-05 332 views
-2

如果我已经声明了double *positions[2]数组,有没有办法找到double *positions[2]数组的实际大小?查找double *数组的大小C++

有没有像sizeof函数来查找大小?

我已经试过的例子,它不会返回的大小4

http://ideone.com/vp3tJz

+0

http://stackoverflow.com/questions/492384/how-to-find-the-sizeofa-pointer-pointing- to-an-array – 2014-12-05 11:33:33

+0

你不需要任何代码。数组的长度是'2'。这在编译时已知。 – 2014-12-05 12:06:56

+0

不,我的意思是存储在指针数组内的元素数量 – 2014-12-05 12:08:37

回答

0

为什么不使用sizeof? 表达

sizeof(positions) 

将返回数组的大小以字节等于做2 * sizeof(double *) 或者你可以使用标准的类std::extent确定数组中元素的NUM BER。例如

std::cout << std::extent<decltype(positions)>::value << std::endl; 

至于你编辑的文章,那么数组的声明不符合你显示的值。该数组被定义为指针作为其元素不是双值的指针。

如果要定义将其值

0.1, 2.5 
10.0, 56.7 
12.4, 20.1 
69.9, 69.9 
72.1, 45.0 

然后初始化数组,你应该写

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)

或者

sizeof(position)/sizeof(*positions) 

将等于5和

sizeof(*position)/sizeof(**positions) 

将等于2

+0

所以如果'double'数组有'5'集'x,y'坐标,'sizeof'会返回'5'? – 2014-12-05 11:38:57

+0

@Stu用户什么是“一组x,y坐标”? – 2014-12-05 11:39:55

+0

我编辑了这个问题,请参考它。就像它有5行x,y坐标,那么'size-of'会返回5吗? – 2014-12-05 11:43:06