[英]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.