【发布时间】:2019-04-09 22:46:02
【问题描述】:
char **init(int n) {
char **result;
result = malloc(n * sizeof(char));
return result;
}
我需要帮助了解第 3 行是否是错误。对 malloc() 的调用将在堆上的内存上创建 N 个连续块,每个块都足够大以存储单个字符,并且它将返回一个 void ptr(数组的基地址)。但是,result 是一个指向指针的指针,所以它需要存储另一个指针的地址,这不是这里的情况?
【问题讨论】:
-
为什么结果是指向指针的指针?
-
@merlin2011 如果你在方法中看到我们声明变量 result 是一个双指针,它是一个指向指针的指针。
-
这可能是一个错误,但我不明白你的推理。
-
@aDabOfRanch,将
result声明为char**意味着result在语法上是char**,但这并不意味着它在语义上是char**。malloc的返回值是一个线性内存块,而不是一个指针数组。 -
一次调用
malloc会创建一个连续的存储块