一个关于动态多维数组的问题

同样的错误,即使你年龄再大,也一样会犯,Opps............

最近在做C#和C++的混合编程。昨天搞了堆栈平衡搞了好久,今天又解决了一个BUG,既开心又难过。

先看代码:

unsigned char*** bytes2D=(unsigned char***)bytesArray;

for(int i=0;i<height/2;i++)

{

for(int j=0;j<scanStride/3;j++)

{

tmp=bytes2D[i][j][0]*0.114+bytes2D[i][j][1]*0.587+bytes2D[i][j][2] *0.299;

bytes2D[i][j][0]=bytes2D[i][j][1]=bytes2D[i][j][2]=tmp;

}

}

不得不说,初学的时候一定也会犯这样的错误。

代码的目的是为了使用动态三维数组,可是编译器不知道bytes2D每一维的长度,这就是关键所在了。

至于怎么实现这样的"动态多维数组"可以考虑百度"c++动态二维数组"作为参考。

当然,有更好的方法你可以告知我(印象中可能有,但是已经不记得了)。

时间: 2024-08-25 06:42:07

一个关于动态多维数组的问题的相关文章

有关动态多维数组的一个问题

同样的错误,即使你的年龄越大,它会犯同样的,Opps............ 最近做的C#和C++混合编程.昨天上演了一出栈平衡了很长一段时间,今天,我们攻克了BUG.既高兴又伤心. 看看代码: unsigned char*** bytes2D=(unsigned char***)bytesArray; for(int i=0;i<height/2;i++) { for(int j=0;j<scanStride/3;j++) { tmp=bytes2D[i][j][0]*0.114+bytes

vector动态二维数组(容器的容器)占用内存分析

之前在这里写过一篇"C++中的动态二维数组".在C++中没有动态二维(多维)数组.但是根据原理我们可以自己创建. 在看过STL的vector源代码后"<STL源码剖析>---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组. 创建一个2x4的二维数组.想到的办法是:先创建一个容器的容器,外层大小的2(2行),然后里面容器小大为4(4列). int row=2,col=4; vector<vector<int> &g

C语言批量数据到动态二维数组

上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数.通过它来动态建立所需的二维数组.因此.通过文件操作和动态创建二维数组结合起来,将大量的数据动态的放入矩阵中,不知道这种思想是否正确,下午把程序执行出来了.将程序贴上来.欢迎大家一起探讨:对于有规律的大数据txt文档怎样高效而准确的读入数组或矩阵中呢???指教!.谢谢 程序: #include<stdio.

以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组

学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简单分析动态二维数组,若有不足或错误之处,还请指出! 在讲这之前,以一维数组为例,先重新认识一下数组: int array[5] = {1, 2, 3, 4, 5}; 首先数组名称是该数组的首地址常量,即数组名称就是指针,就有&array[0] == array! 那么我们可以推出*array ==

php数组根据某键值,把相同键值的合并最终生成一个新的二维数组

要处理的PHP数组: $infos = array(         array(         'gid' => 36,         'name' => '高二佳木斯',                  'start_time' => '2015-08-28 00:00:00',                    'pic' => '2015/08/438488a00b3219929282e3652061c2e3.png'                       

创建动态二维数组

1 //======================================================== 2 //创建动态二维数组a [M] [N]: 3 //思路一:二维数组的抽象理解: 4 //思路二:二维数组在内存中实际排列: 5 //======================================================== 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <

对一个给定的二维数组按照指定的键值进行排序

public function set_s(){ $arr = [ ['one' => 6,'two' => 19], ['one' => 36,'two' => 3], ['one' => 26,'two' => 3], ['one' => 2,'two' => 84], ['one' => 5,'two' => 35], ['one' => 6,'two' => 56], ['one' => 7,'two' => 7]

JavaScript 通过循环按执行顺序,做一个5&#215;5的二维数组,赋1到25的自然数,然后输出该数组的左下半三角。

通过循环按执行顺序,做一个5×5的二维数组,赋1到25的自然数,然后输出该数组的左下半三角.试编程. 基本思路: 1 var container_arr = []; 2 // 建立五个数组 3 for(var i = 0,count = 0 ; i < 5; i++){ 4 var arr = []; 5 for(var k = 0 ; k < 5 ; k ++){ 6 // 这个内层循环会执行 5 * 5 次 7 count ++; //count会从1 ~ 25 8 arr.push(co

c++动态二维数组(原地址:http://blog.sina.com.cn/s/blog_4e7ae8ca0100zqq6.html)

C++中用new动态创建二维数组的格式一般是这样: TYPE (*p)[N] = new TYPE [][N]; 其中,TYPE是某种类型,N是二维数组的列数.采用这种格式,列数必须指出,而行数无需指定.在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针. 还有一种方法,可以不指定数组的列数: int **p;p = new int*[10];    //注意,int*[10]表示一个有10个元素的指针数组for (int i = 0; i != 10; ++i){    p[