【发布时间】:2012-04-12 01:47:31
【问题描述】:
我正在编写 C 代码,我想堆分配 512*256 字节。为了我自己的方便,我希望能够使用语法 array[a][b]; 访问元素。没有算术来找到正确的索引。
我在网上看到的每个教程都告诉我创建一个指针数组,这些指针指向我想要在数组中包含的行的数组。这意味着每个子数组都需要单独进行 malloc 和 free 。我对只需要一次调用 malloc 和一次调用 free 的解决方案感兴趣。(因此所有元素都是连续的)我认为这是可能的,因为我不会构造锯齿状数组。
如果有人能分享声明这样一个数组的语法,我将不胜感激。
【问题讨论】:
-
C++ 是一种选择吗?您可以创建一个重载索引运算符的简单 C++ 对象。
-
@RichardJ.RossIII:这真的是对“我如何在 C 中做到这一点”这个问题的有效回答吗? (意识到您确实将其作为评论留下)。任何一天我都会用 C 代替 C++,谢谢。
-
@EdS。虽然您可能更喜欢 C,但 C++ 在很多情况下会更好,这就是其中之一。我把它作为评论留下只是为了确定它是否是一个选项。
-
@RichardJ.RossIII:C++ 更适合分配二维数组?嗯?我不这么认为,这在 C 中很容易实现,不需要 C++ 运算符重载。
-
看我的回答;与其他人不同,它实际上可以满足您的要求。
标签: c multidimensional-array malloc