malloc()函数返回空指针或指向已分配空间的指针。假设我们创建了一个字符串:
char* ptr = malloc(size)
ptr
指针不是指针吗?
不是:
char** ptr = malloc(size)
应该是声明指向char的正确方法吗?
但是,当我们执行任何操作时,编译器都不会发出警告,如果使用的话,它会给出格式说明符的警告。
我们应该如何宣布这个以及为什么?另外,如何使用char **?
答案 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
管理矩阵(数组数组)或字符串数组。