char **init(int n) {
char **result;
result = malloc(n * sizeof(char));
return result;
}
我需要帮助来了解第三行是否是错误。调用malloc()将在堆上的内存中创建N个连续的块,每个块足够大以存储单个字符,并且它将返回一个空的ptr(数组的基地址)。但是,结果是一个指向指针的指针,因此它需要存储另一个指针的地址,在这里不是这种情况吗?
答案 0 :(得分:0)
也许您正在寻找做这样的事情:
char *init(unsigned int n) {
char *result;
/* allocate the memory */
result = malloc(n * sizeof(char));
return result;
}
这将分配内存以存储n个连续字符。
您可以将代码简化为:
char *init(int n) {
return malloc(n * sizeof(char));
}
或者您可以直接执行以下操作来代替调用此函数:
malloc(n * sizeof(char));
或者您可以创建一个宏
#define INIT_CHAR_ARR(n) malloc((n) * sizeof(char))
如果要n个连续的字符指针:
malloc(n * sizeof(char*))
如果您解释了最终目标,它将帮助我们为您提供帮助,也许有更好的方法来完成您的工作。