定义指针数组的指针

时间:2016-02-06 02:29:48

标签: c arrays pointers

我想使用指向指针来存储动态数组数据集,但我不知道如何将它们链接在一起。有谁知道如何解决这个问题? 如何使用动态数组初始化指针数组的指针?如何使用指针指针选择特定的数据集来进一步编程?

      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));
      }

2 个答案:

答案 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]);

还记得检查错误和空闲记忆。