我有一个变量N
。我需要一个6xNxN
array.
像这样的事情:
int arr[6][N][N];
但显然,这是行不通的。
我不确定如何分配它以便我可以访问,例如arr[5][4][4]
if N
是 5,并且arr[5][23][23]
if N
is 24.
注意N
永远不会改变,所以我永远不必改变realloc
ate arr
.
我应该怎么办?将要int ***arr = malloc(6 * N * N * sizeof(int));
work?
您可以在堆上将 3 维数组分配为
int (*arr)[N][N] = malloc(sizeof(int[6][N][N]));
使用后,您可以免费作为
free(arr);
另一种与 @StoryTeller 建议相同的写作方式是 -
int (*arr)[N][N] = malloc(6u * sizeof(*arr));
但这里你需要小心u
after 6
以防止有符号算术溢出。
此外,平台上仍然可能存在问题size_t
宽度较小int
正如 @chqrlie 所建议的,但在“最”常用的平台上情况并非如此,因此您可以很好地使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)