返回malloc()函数

时间:2017-03-09 12:22:04

标签: c pointers

据说

malloc()函数返回空指针或指向已分配空间的指针。假设我们创建了一个字符串:

char* ptr =  malloc(size)  

ptr指针不是指针吗? 不是:

char** ptr = malloc(size)  

应该是声明指向char的正确方法吗?

但是,当我们执行任何操作时,编译器都不会发出警告,如果使用的话,它会给出格式说明符的警告。

我们应该如何宣布这个以及为什么?另外,如何使用char **?

3 个答案:

答案 0 :(得分:4)

不,'ptr'将包含'malloc'返回的指针。您分配返回的指针,而不是取其地址。

答案 1 :(得分:3)

char *表示字符指针。 Malloc将返回一个void *指针(它将自动转换为您尝试分配的任何指针)。

char **表示char *指针。这是指向指针的指针。

如果您将指针视为地图,char *是char的地图,void *是一个神秘的地图,char **是另一个地图的地图这导致了一个char。所以

char* ptr = malloc(size);

是正确的吗,因为你想要一张地图,而不是地图的地图。

答案 2 :(得分:1)

  • *ptr是指向char的指针,它通常用于管理数组 或字符串。

  • **ptr是指向char的指针,通常用于指向char 管理矩阵(数组数组)或字符串数​​组。