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
大批。索引 i
是 i = k/m
,索引 j
是 j = k%m
(k modulo m).
因此,以下表达式使您可以访问 n 个元素中的第 k 个元素。
arrays[k/m][k%m]
如何在 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
大批。索引 i
是 i = k/m
,索引 j
是 j = k%m
(k modulo m).
因此,以下表达式使您可以访问 n 个元素中的第 k 个元素。
arrays[k/m][k%m]