【发布时间】:2015-04-30 20:20:21
【问题描述】:
为了制作一个二维数组,我目前正在使用以下内容:
int * own;
own = (int *)calloc(mem_size, sizeof(int));
for (i=0;i<mem_size;i++){
own[i] = (int *)calloc(3, sizeof(int));
}
但是,每次我引用 own[i][j] 时,我都会收到一条错误消息,指出下标值既不是数组也不是指针也不是向量。
【问题讨论】:
-
own应该是int**。 -
通常最好将二维数组建模为连续块并使用 i x 行 + j 来访问元素。考虑将此作为替代方案。
-
更准确地说,这不是 2D 数组,而只是通过指向指针的指针来模拟这种东西。如果你必须这样做,请不要这样做。
int (*own)[n] = malloc(sizeof(int[m][n]));是你所需要的一个像样的 C 编译器。 -
@JensGustedt:你应该这样回答——这绝不是一种显而易见的技术。事实上,我认为我以前从未见过它使用过。 (如果您有时间和兴趣,最好扩展一下什么是体面或不合适的编译器)。
-
@MichaelBurr,这不适合作为这里的答案,问题比这更具体。我也这样做了好几次,在上面写了博客,……,只是传播这个词。 gustedt.wordpress.com/2011/01/09/…