返回malloc()函数
malloc()函数据说返回一个空指针或指向已分配空间的指针。假设一个字符串,我们做出声明:返回malloc()函数
char* ptr = malloc(size)
是不是ptr
的指针将指向指针?
是不是:
char** ptr = malloc(size)
应该是申报字符指针的正确方法是什么?
但是,编译器在我们做的时候并没有给出警告,它给出的警告是格式说明符(如果使用的话)。
我们应该如何申报,为什么?另外,如何使用char **?
char *
表示一个字符指针。 Malloc将返回一个void *
指针(该指针将自动转换为您要分配的任何指针)。
char **
表示char *
指针。这是一个指向指针的指针。
如果你认为一个指针作为一个地图,你有char *
是一个映射到一个char的,void *
是一个地图,神秘的东西和char **
是一个地图到另一个地图,导致一个char。所以
char* ptr = malloc(size);
是正确的,因为你想要一个地图的东西,而不是映射到地图。
你应该说“自动转换”,而不是“转换”,以避免与* cast *的含义混淆为明确的转换。 – trentcl
@NomeQueEuLembro,如何将cast与malloc()或calloc()一起使用,请你举个例子吗? – BumbleBee
谢谢,@ trentcl!固定。 – NomeQueEuLembro
不,'ptr'将包含'malloc'返回的指针。你是指定返回的指针,没有取其地址。
*ptr
是指向一个char,其通常用于管理阵列 或字符串。**ptr
是一个指针的指针为char,其经常被用于
管理的矩阵(阵列的阵列)或一个字符串数组。
@ Jean-FrançoisFabre这不是一个有效的上帝,我猜。 –
我应该阅读文本而不仅仅是代码。 –