我想使用指向指针来存储动态数组数据集,但我不知道如何将它们链接在一起。有谁知道如何解决这个问题? 如何使用动态数组初始化指针数组的指针?如何使用指针指针选择特定的数据集来进一步编程?
float *data;
float **dataIndex;
*dataIndex = (float**)malloc(number * sizeof(float*));
data = (float*) malloc(size * sizeof(float));
for(i = 0; i < size; i++){
scanf("%f", (data + i));
}
答案 0 :(得分:0)
要动态分配2D数组,您需要使用循环来初始化数组中的每个指针。
float **arr;
size_t i, n;
if ((arr = malloc(n * sizeof(float *)) == NULL)
perror("malloc");
for (i = 0; i < n; ++i)
if ((arr[i] = malloc(sizeof (float))) == NULL)
perror("malloc");
不要忘记释放你的记忆。
while (--n >= 0)
free(arr[n]);
free(arr);
首先需要小心释放每个子阵列,然后释放整个阵列。
答案 1 :(得分:0)
这不是指针指针的分配方式。
dataIndex = malloc(number * sizeof(float*));
for(i = 0; i < number; i++)
dataIndex[i] = malloc(size * sizeof(float));
现在,如果要填充数据,则需要像二维数组dataIndex[i][j]
一样访问它。
for(i = 0; i < number; i++)
for(j = 0; j < size; j++)
scanf("%f", &dataIndex[i][j]);
还记得检查错误和空闲记忆。