C中的指针数组

Array of pointers in C

如何在 C 语言中创建包含多个指针的数组?

例如 如果您有一个大小为 n 的数据集,您希望将其拆分为 t 个块。所以如果你想访问 0-(n/t) 范围内的元素,你需要访问数组索引并转到相应的指针索引。

这将适用于 int 数据

int *arr_of_ptr[t];
for(int i = 0; i < t; i++)
    arr_of_ptr[i] = malloc(sizeof(int) * n/t);

所以你想在 t 个数组中存储 n 个元素。 首先注意 n modulo t 可能不是 0。所以你不能简单地将 n/t 元素存储在 t 数组中。

您需要将 m = n / (t-1) 个元素存储在第 t-1 个数组中,将其余元素存储在最后一个数组中。

int i, m;

// Create an array of t arrays that will contain the value of type T
T **arrays = malloc(t*sizeof(T*));

// Compute the maximum number of elements in each array 
m = n / (t-1);

// Create the t arrays
for (i = 0; i < t; ++i)
    arrays[i] = malloc(m*sizeof(T));

要访问此数据结构中的元素 k,您必须确定保存数据的数组的索引 i,以及数组中元素的索引 j大批。索引 ii = k/m,索引 jj = k%m (k modulo m).

因此,以下表达式使您可以访问 n 个元素中的第 k 个元素。

arrays[k/m][k%m]