gpt4 book ai didi

c - 为 3D 数组分配内存

转载 作者:行者123 更新时间:2023-12-04 09:22:14 25 4
gpt4 key购买 nike

我知道如何为二维数组分配内存,但如果 ptr 定义为 int *ptr[][100];

那我如何为 ptr 分配内存呢?

最佳答案

引用自 C 标准的第 6.2.5 节:

An array type of unknown size is an incomplete type. It is completed, for an identifier of that type, by specifying the size in a later declaration (with internal or external linkage).

因此,要使用 int *ptr[][100];,您必须链接到它的定义。如果您指定该长度,那么您将得到一个指向 int 的二维指针数组。此时,您必须为 3D 数组分配足够大的内存块,并正确分配 2D 数组中的每个 int *

更直接的方法如下:

int nx = 100;
int ny = 200;
int nz = 300;

int (*parray)[ny][nz] = malloc(nx*ny*nz*sizeof(int));

最后一行分配了一个指向 int 数组的数组的指针,可以像 3D 数组一样有效地使用。例如:

for(int ii = 0; ii < nx; ii++)
for (int jj = 0; jj < ny; jj++)
for (int kk = 0; kk < nz; kk++)
parray[ii][jj][kk] = ii*ny*nz + jj*nz + kk;

this question 的公认答案对类型数组指针的使用给出了一个非常好的和精确的概述。

关于c - 为 3D 数组分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com