错误:
x.cpp:641:39: error: invalid conversion from ‘void*’ to ‘char**’
x.cpp:644:39: error: invalid conversion from ‘void*’ to ‘char*’
代码:
int argc;
char **argv;
char **argvv;
argvv = malloc (argc * sizeof(char *));
for(int i = 0; i < argc; i++)
{
argvv[i] = malloc(200 * sizeof(char));
}
argc 和 argv 通过main()从命令行接收参数。
答案 0 :(得分:3)
你写的是有效的C,但是C ++是无效的。
确保使用C编译器,并将文件命名为.c
而不是.cpp
(在某些情况下,GCC会从文件扩展名中推断语言)。
或编写C ++,并使用std::vector
(或其他一些最适合您需要的容器类型)和std::string
来删除内存分配技巧。
答案 1 :(得分:2)
int argc;
char **argv;
char **argvv;
argvv = new char*[argc];
for(int i = 0; i < argc; i++)
{
argvv[i] = new char[200];
}
使用C ++的new
和delete
运算符。
稍后编辑:
同样删除(相当于C中的free
):
for(int i = 0; i < argc; i++)
{
delete [] argvv[i]; // mind the [] for array destruction
}
delete argvv;
答案 2 :(得分:-2)
malloc
返回void*
。您需要将它们转换为正确的类型,例如argvv = (char**)malloc(....
。