2017-03-09 180 views
0

malloc()函数据说返回一个空指针或指向已分配空间的指针。假设一个字符串,我们做出声明:返回malloc()函数

char* ptr = malloc(size) 

是不是ptr的指针将指向指针?
是不是:

char** ptr = malloc(size) 

应该是申报字符指针的正确方法是什么?

但是,编译器在我们做的时候并没有给出警告,它给出的警告是格式说明符(如果使用的话)。

我们应该如何申报,为什么?另外,如何使用char **?

+1

@ Jean-FrançoisFabre这不是一个有效的上帝,我猜。 –

+1

我应该阅读文本而不仅仅是代码。 –

回答

3

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

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

如果你认为一个指针作为一个地图,你有char *是一个映射到一个char的,void *是一个地图,神秘的东西和char **是一个地图到另一个地图,导致一个char。所以

char* ptr = malloc(size); 

是正确的,因为你想要一个地图的东西,而不是映射到地图。

+4

你应该说“自动转换”,而不是“转换”,以避免与* cast *的含义混淆为明确的转换。 – trentcl

+0

@NomeQueEuLembro,如何将cast与malloc()或calloc()一起使用,请你举个例子吗? – BumbleBee

+1

谢谢,@ trentcl!固定。 – NomeQueEuLembro

4

不,'ptr'将包含'malloc'返回的指针。你是指定返回的指针,没有取其地址。

1
  • *ptr是指向一个char,其通常用于管理阵列 或字符串。

  • **ptr是一个指针的指针为char,其经常被用于
    管理的矩阵(阵列的阵列)或一个字符串数组。