gpt4 book ai didi

c - 将数组分割成更小的 block 的最佳方法 - C 编程

转载 作者:行者123 更新时间:2023-11-30 20:02:53 24 4
gpt4 key购买 nike

将大小为 2000 的数组拆分为 250 个元素的 block 的最佳方法是什么。array[2000] --> 分成 250 个元素的 block ,8 个子数组。谢谢。

最佳答案

给定:

#define ARRAY_SIZE 2000
#define CHUNKS 8
#define CHUNK_SIZE = (ARRAY_SIZE / CHUNKS)
atype array[ARRAY_SIZE] ;

然后:

atype* chunks[CHUNKS] ;
for( int i = 0; i < CHUNKS; i++ )
{
chunks[i] = &array[i * CHUNK_SIZE] ;
}
然后可以访问

chunks就像它是一个二维数组chunks[8][250]。然而,也存在一些重要的差异。

事实上,定义数组 chunks[8][250] 可能更有意义,然后创建一个单个指针array引用组合 block :

atype chunks[CHUNKS][CHUNK_SIZE] ;
atype* array = (atype*)chunks ;

那么,chunks 是一个真正的二维数组,而 array 可以一样访问它是一个数组 array[ 2000] - 但同样相同。这里的优点显然是更简单的初始化 - 它不需要循环。

两者的区别是:

enter image description here

重要的是,首先:

sizeof(array) == sizeof(atype * ARRAY_SIZE)
sizeof(chunks) == sizeof( atype* * CHUNKS)

在第二个时:

sizeof(array) == sizeof(atype*)
sizeof(chunks) == sizeof( atype * CHUNKS * CHUNK_SIZE)

如果您要复制或移动数据,这些区别非常重要。

关于c - 将数组分割成更小的 block 的最佳方法 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58883061/

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