警告:指向整数而不强制转换

时间:2015-11-13 21:50:29

标签: c

我目前正在收到此编译时警告:

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

我不太清楚为什么会出现这个问题。

3 个答案:

答案 0 :(得分:2)

  

警告:赋值使用整数而不使用强制转换

最有可能的是,在调用 之前没有给原型调用my_vect2str()。因为编译器不知道my_vect2str()返回什么,它会假定int,但上面的错误消息。

答案 1 :(得分:1)

我认为你希望你的矢量是这样的:

char* my_vect2str(char* x);

您的退货类型没问题,但在您的通话中,argv[3]将返回取消引用的值。 char**暗示“指针数组”,从你调用它的方式来看是没有意义的。

答案 2 :(得分: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终结符,因为函数不会将长度作为参数。