gpt4 book ai didi

C-传递 3d 数组、分配和人口

转载 作者:行者123 更新时间:2023-11-30 17:49:21 25 4
gpt4 key购买 nike

假设我有以下功能。

void function createBands(boolean option) {
int i, j;
int ***bands = (int ***)malloc((SIZE + 1) * sizeof(int **));
for (i = 0; i < SIZE; i++) {
bands[i] = (int **)malloc(HEIGHT * sizeof(int *));
for (j = 0; j < HEIGHT; j++)
bands[i][j] = (int *)malloc(WIDTH * sizeof(int));
}
iterator *it =
createIterator(params); // do not be confused it is a structure with
// methods andaeribute just like Iterator class in
// java . Methods are poniters to functions.
repare_array(bands[Size], it);
}
void prepare_array(int **band, iterator *it) { read_array(band, it); }

read_array(int **band, iterator *it) {
for (int i = 0; i < Height; i++)
band[i] = (int *)it->next();
}

// Now in Iterator.c I have the iterator structure with the methods etc I will
// write just some line form iterator.

void *next() {
byte *b =
a function that reads bytes form a file and returns byte * CORECTLY !!!;
return b == NULL ? NULL : bytetoT(b);
// this function make void form byte conversion but it doesnt work so I make
// only a cast in read_aray as you see. SUppose just return b wich is byte(i
// know in C isn't any byte but I redeclared all the types to be JAVA.)
}

问题是我应该在哪里分配带,因为在这种情况下,函数返回的一维 vector 是可以的,因为我看到了函数作用域中的值。但是当它返回到 array[i] 时,我得到了一个未分配的 3dVector。我需要接收带[size][i][j]的数据形式b。在 b 中,数据很好,然后我得到的带为空。到目前为止,我所做的就是在调用 read_array 之前在准备数组中进行另一个分配,我在其中分配 **band,然后我得到了一些结果,但我没有信心。对困惑感到抱歉!而且每一条评论都对我有好处。也许我所做的还可以,我不知道!我对 C 并不陌生,只是长时间不使用指针。

最佳答案

如果是二维指针(**),则必须为其分配二维数组的地址,如果是一维数组,则必须为其分配一维数组的地址。

对于你的 read_array 函数

             read_array(int**array...)
{
for(i=0;i<HEIGHT(the same as in allocation);i++)
`enter code here`array[i] = function();//function return an 1D array
}

确保 function() 返回一维数组的地址。

关于C-传递 3d 数组、分配和人口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923415/

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