2014-12-04 83 views
-2

家伙我用C编程,试图做一个char类型这样的动态分配:的malloc使用C返回void

char **word1 = malloc(sizeof(char *)* 1); 
char **word2 = malloc(sizeof(char *) * 1); 

但它导致这样的埃罗:从“无效无效的转换*'到'char **'[-fpermissive]

感谢每一位帮助我的人。

+0

malloc返回'void *'你需要强制转换成'char *'在等号后面加一个'(char *)'。 – 2014-12-04 09:19:32

+2

然后你很可能不会编译C代码,而是编写C++代码。如果你正在编程C++,那么你不应该使用'malloc' /'free',事实上,现在你几乎不必在C++中使用指针。 – 2014-12-04 09:20:17

+0

看起来像来自C++编译器的错误。 – sgarizvi 2014-12-04 09:20:19

回答

4

c编译器[gcc],这个错误不会显示出来。

c++编译器[g++]中,这个错误很可能发生。

摆脱这一点,无论是

  1. 使用c编译器来编译上面的代码。
  2. 使用c++编译器并将char **强制转换为malloc()返回值。

注:国际海事组织,去第一点。 neither to use malloc() family in c++,也不是malloc()casting the return

6

一个有教养的猜测:你使用的是C++编译器。 C不需要从void*转换到其他指针类型,但是C++会。

考虑使用C编译器,还是使用由malloc返回的值。

+2

“考虑使用C编译器,或者转换malloc返回的值。” *但不是两个!! * – Roddy 2014-12-04 09:27:26

+4

这就是'任一'应该强调的,罗迪。 – 2014-12-04 09:31:53