C - malloc数组在函数中,然后从外部访问数组

iht*_*tus 2 c

这是我如何malloc一个int var然后在函数外部访问这个var

int f1(int ** b) {
  *b = malloc(sizeof(int)); 
  **b = 5;
}

int main() {
  int * a;
  f1(&a);
  printf("%d\n", *a);
  // keep it clean : 
  free(a);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用上面的相同逻辑,我如何在函数内malloc一个1 dim数组,然后在func之外访问它?

请帮忙,我对指向数组的指针感到困惑.

Set*_*gie 12

以完全相同的方式,但有一些不同的算术.您可以考虑使用一个元素分配数组时现在正在做什么.只需乘以sizeof(int)您希望阵列拥有的元素数量:

int f1(int ** b, int arrsize) {
  *b = malloc(sizeof(int) * arrsize);

  // then to assign items:
  (*b)[0] = 0;
  (*b)[1] = 1;
  // etc, or you can do it in a loop
}

int main() {
  int * a, i;
  int size = 20;

  f1(&a, size); // array of 20 ints

  for (i = 0; i < size; ++i)
      printf("%d\n", a[i]); // a[i] is the same as *(a + i)
                            // so a[0] is the same as *a

  // keep it clean : 
  free(a);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)