C++动态分配的二维数组,如何获得数组的两维长度?

int **pixel;
pixel = new int*[w];
for(int a=0;a<w;a++) {
pixel[a] = new int[h]; }
这样动态创建的二维数组,w,h已经通过键盘输入获得.然后每个数据都已经填充进了INT数据,那么我现在只知道这样一个数组,如何来获得他的二维长度呢?C++有类似.length的函数吗?新学C++,望指教

这样的动态分配的无法在后续获得长度。
(楼下几位列出的公式是计算数组的,与你动态分配的指针是两回事)
但知道长度也比较简单。因为你在new的时候,就要先知道长度。这里已知的w与h就是你想要的长度。
如果是别人new出来的然后返回给你使用,你要求他将长度也一起给你就好。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-08
c++没有length函数,不过你可以用sizeof来计算大小
其实你只要保存好你初始华时候的w和h就可以了,一般也就是这么做的
第2个回答  2011-10-07
((long)sizeof(array)/(long)sizeof(array[0]))
第3个回答  推荐于2017-10-01
使用sizeof(data)/sizeof(data[0])即可获得数组data的长度。
1、C语言中,定义数组后可以用sizeof命令获得数组的长度(即可容纳元素个数)。但是通过传递数组名参数到子函数中,以获得数组长度是不可行的,因为在子函数当中,数组名会退化为一个指针。
2、例如:
int data[4],length;
length=sizeof(data)/sizeof(data[0]); //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数
printf("length of data[4]=%d", length ); //输出length of data[4]=4
第4个回答  2011-10-07
时代的