通过引用传递空数组并在函数内初始化它

Pass empty array by reference and initialize it inside function

我在 运行 时遇到分段错误,但没有错误。 我正在尝试将指针传递给指针数组,将其初始化为指针数组,填充数组和调用函数可用的数据。

static void test4(int ***arr)
{
    int *values = (int *) MEM_mallocN(sizeof(int) * 3, "*values");
    values[0] = 0;
    values[1] = 1;
    values[2] = 2;
    *arr = (int **) MEM_mallocN(sizeof(int *) * 3, "*arr");
    *arr[0] = &values[0];
    *arr[1] = &values[1];
    *arr[2] = &values[2];   /* this line causes crash */
}

static void test3(void)
{
    int **arr = NULL;
    test4(&arr);
    for (int i = 0; i < 3; i++) {
        printf("arr[%d] = %p \n", i, arr[i]);
    }
    for (int i = 0; i < 3; i++) {
        printf("arr[%d] = %d \n", i, *arr[i]);
    }
}

你的意思好像是

( *arr )[0] = &values[0];
( *arr )[1] = &values[1];
( *arr )[2] = &values[2];   

后缀下标运算符[]的优先级高于一元运算符*.