假设这些随机方法
void out_param_test(int *in, int **out)
{
int *temp = calloc(buffer_size, sizeof(int));
for (int i = 0; i < buffer_size; i++)
{
temp[i] = in[i] * 2;
}
*out = temp;
}
Main#1
int main()
{
srand(42);
int *output;
int *one_k_rand_ints = calloc(buffer_size, sizeof(int));
for(int i = 0; i < buffer_size; i++)
{
one_k_rand_ints[i] = rand() % 11;
}
out_param_test(one_k_rand_ints, &output); //works like a charm
}
但 Main#2
int main()
{
srand(42);
int **output; //Mind the double pointer!
int *one_k_rand_ints = calloc(buffer_size, sizeof(int));
for(int i = 0; i < buffer_size; i++)
{
one_k_rand_ints[i] = rand() % 11;
}
out_param_test(one_k_rand_ints, output); //does not work
}
我不明白,我很沮丧也很累. 我不想理解和缠绕我的头周围的每一个小怪癖. 每次,我参与一个C语言的项目,我都需要质疑我所知道的一切,并从头开始.也许错误在于说教的方法. 我已经编码将近十年了.我以前以为我懂C.在一个脆弱的时刻,我认为这是故意设计的.不是为了伤害我们,而是出于懒惰.因为对我来说,没有明显的原因,为什么主要#2不应该工作.抱歉,我哭了.
如果有人能给出一个好的解释,我将不胜感激.