gpt4 book ai didi

c - 在函数中初始化动态数组的值(C语言)

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:29 26 4
gpt4 key购买 nike

这是我的代码:

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)

括号是必需的,因为数组下标运算符[] 比解引用运算符* 具有更高的优先级。

一般来说,您应该尽可能使用数组下标运算符,因为它往往更易于阅读。

关于c - 在函数中初始化动态数组的值(C语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com