【发布时间】:2022-01-09 17:07:45
【问题描述】:
我有一个二维数组,需要动态分配,所以写了这个:
int * array;
array = malloc((sizeA * sizeB) * sizeof(int));
它基本上是一个一维数组,它的行为就像是一个二维数组。我像下面这样访问它:
for(int y = 0; y <= sizeA; y++){
for(int x = 0; x <= sizeB; x++){
array[x * y] = /* some stuff */;
}
}
我认为这样写一切都很好,但在某些情况下这行不通。
案例1: x * y 多次得到相同的结果
x = 3, y = 2
x * y = 6
x = 2, y = 3
x * y = 6,同样
意味着某些值会被覆盖并丢失。但是还有另一种情况,这会导致问题。
案例 2: 主号码超出 sizeA 或 sizeB 的范围
有些值不能使用,因为主数只能是数字本身和 1 相乘的结果。因此,虽然我的数组中的一些值被覆盖,但其他一些值甚至不会被使用。
我能做些什么来防止这种情况发生?
【问题讨论】:
标签: c multidimensional-array dynamic-arrays