簡體   English   中英

在函數中初始化動態數組的值(C語言)

[英]Initialize values of dynamic array in a function (C language)

這是我的代碼:

void init_array(int** array) {

  *array = (int*) malloc(3 * sizeof(int));

  /* ???? **(array+2) = 666; */

  return;
}

void init(int* array, int* length) {

  *length = 3;

  *(array+0) = 0;
  *(array+1) = 1;
  *(array+2) = 2;

  return;

}

int main(void) {

  /* Variables */

  int array_length;
  int* array;

  /* Initialize */

  init_array(&array);
  init(array, &array_length);

  free(array);

  return 0;

}

我的問題是:如何在函數init_array()中初始化數組的值。

我嘗試過這樣的事情:

  • **(array+2) = 666;
  • *(*(array+2)) = 666;
  • *array[2] = 666;
  • **array[2] = 666;

當我使用鉛筆和紙張時,我得出結果**(array+2)應該工作,但它給我一個分段錯誤。

我很感激你的回答,因為我很困惑C中的指針實際上是如何工作的。

你有一個傳遞給函數的指針的地址:

array

你想取消引用來獲取指針:

*array

然后將數組下標運算符應用於結果:

(*array)[2]

或等效地:

*((*array) + 2)

括號是必需的,因為數組下標operator []優先級高於取消引用運算符*

一般來說,您應該盡可能使用數組下標運算符,因為它往往更容易閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM