函数中指针的问题

时间:2015-10-25 23:47:34

标签: c arrays

在函数中初始化数组时遇到了不稳定的行为。

我在下面有一个未初始化的指针:

int *arr;

我将它传递给函数进行初始化。

init_arr(&arr);

void init_arr(int **arr)
{
*arr = (int *) calloc(10, sizeof **arr);
}

指针被启动,当我尝试获取项目* arr [2]以及更大时我得到错误:

Cannot access memory to address 0x0

源代码是使用gcc版本4.8.4编译的

1 个答案:

答案 0 :(得分:1)

而不是表达

 *arr[2]

你必须使用

 arr[2]

您分配了一个包含10个整数的数组。因此,要访问数组的元素,只需编写例如arr[2]

如果你的意思是在函数init中访问已分配数组的元素,那么你必须写

 ( *arr )[2]