最近写程序接触了很多矩阵计算,现在我想知道是用指针好还是用二维数组比较好?我觉得对称矩阵用指针比较好,可以节约一半内存;普通的矩阵用二维数组比较好,代码便于理解。

解决方案 »

  1.   

    其实我早就想做一个矩阵类,但是苦于水平低下,一些函数也没有准备齐
    用第三方的库,又没有安全感,而且总觉得不是自己的东西,不顺手。慢慢积累吧。按照你的意思,似乎是用matrix[][]这样表示比较好?其实我实际开发的时候也是用的二维数组,但声明一个300*300的数组,只用其中一半,总觉得不爽。
      

  2.   

    ---- 二位数组是在 程序的栈上分配空间,而栈的大小受到很大的限制, 最大的大小受到连接参数(/STACK)的控制,默认大小为 1M。
    ---- new 分配的空间是在堆上,最大的大小取决于寻址能力,如果处理大量数据(比如图像)建议使用堆上的空间
      

  3.   

    众说纷纭.........我倒了...........
    那么,哪位大佬能总结一下呢?什么情况下用二维数组?什么情况下用指针?
    什么情况下用new? static? const??我个人觉得:
    知道大小的,用二维数组;
    不知道大小的,用指针;
    利用二维数组,最好加上static, 就不会出现 stack flow;
    经验丰富的,就自己写一个类;如果将一个矩阵作为函数的参数(分改变被传递的矩阵和不改变两种情况),怎么用好呢?
      

  4.   

    to rucil(电气工程师广广) 你的“知道大小的,用二维数组;不知道大小的,用指针;”不正确(指针是不能指向一个未知大小的内存区域的)。 你要知道堆和栈的区别。
      

  5.   

    我不知道堆的概念  :(  
    我只学过微机原理,知道栈是一块内存,最后push进去的数据最先被pop出来;
    那么,new产生的指针也不能指向未知大小的内存吗?
      

  6.   

    我是做图像处理的,所有数组我都是动态分配,使用格式为a[y][x],a[z][y][x]。这样算法看起来很清晰。
      

  7.   

    关于指针运算,是不是可以考虑用MATLAB,要方便地多!
      

  8.   

    matlab功能很强,但速度有点慢。不太适合用在游戏编程中
      

  9.   

    我看用CArray 吧,以后你还有可能加数据呢,
      

  10.   

    有人谈到了matlab, 那么matlab的C/C++接口,大家用的是什么呢?是matcom还是直接用cpp math library?