2015-11-13 91 views
-1

我目前得到这个编译时警告:警告:使指针整数,未投

warning: assignment makes pointer from integer without a cast 

以下行的代码:

char* msg = my_vect2str(argv[3]); 

请注意,我my_vect2str功能有返回类型char*如在声明中所示:

char* my_vect2str(char** x); 

而且显而易见按照通用标准,argv被定义为char** argv

我不太确定为什么会发生这个问题。

+0

我认为一些更相关的代码将有所帮助。 –

+2

'my_vect2str'需要一个字符串数组作为参数,但是您只是传递一个字符串。 – Barmar

+0

问问你自己'argv [3]'的类型是 –

回答

1

我想你想你的载体是这样的:

char* my_vect2str(char* x); 

你的返回类型是好的,但在你的电话,argv[3]将返回去参考价值。 char**意味着“指针数组”,这从你称之为没有意义。

+0

my_vect2str应该接受一串字符串,然后返回由空格分隔的字符串。抱歉,我忘记了包含这些信息。 – sampleton

+0

答案并没有提到警告:“*'赋值使得整形指针没有转换成”*“ – alk

0

my_vect2str需要一个字符串数组,但你只是传递一个字符串。你可以这样做:

char *msg = my_vect2str(argv); 

要传递整个argv数组。如果你只是想通过argv[3],可以使包含另一个数组是:

char *new_array[] = { argv[3], NULL }; 
char *msg = my_vect2str(new_array); 

我假设my_vect2str预计阵列有一个NULL终止,因为功能不走长度为论据。

+0

Barmar,尽管正确的错误肯定指向了别的东西。 – alk

2

警告:赋值时将整数指针不进行强制转换

最有可能你在呼唤my_vect2str()而不必给出一个原型它之前调用它。因此,由于编译器不知道my_vect2str()返回什么,它假定为int,虽然上面的错误消息。