首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赋值在返回指针时使用C语言从整数生成指针,而不使用强制转换。

赋值在返回指针时使用C语言从整数生成指针,而不使用强制转换。
EN

Stack Overflow用户
提问于 2016-01-08 22:03:07
回答 1查看 1.9K关注 0票数 2

我是编码函数,它将两个字符数组和整数分割成一个字符串,并返回指向新字符数组的指针,但是在编译时,我得到了以下警告:

警告:赋值使指针在没有强制转换的情况下从整数生成。 mapfile = world_to_char(“map/”,map,".bin“); (2)必然的产品

这是我的代码,前两行是gcc警告我的文件中的一行:

代码语言:javascript
复制
char *mapfile;
mapfile = world_to_char( "maps/", map, ".bin" );

函数(我知道它只适用于0;99的数字,但对我来说已经足够了):

代码语言:javascript
复制
char *world_to_char( char dir[], int number, char ext[] ) {
    char id[ 3 ] = { 0, 0, 0 };

    if( number > 9 ) {
        id[ 1 ] = ( number % 10 ) + '0';
        number /= 10;
    }
    id[ 0 ] = number + '0';

    char *map;
    map = malloc( MAX_MAP_FILENAME * sizeof( char ) );

    strcpy( map, dir );
    strcat( map, id );
    strcat( map, ext );

    return map;
}

我为什么要收到这个警告?我返回的指针不是整数。

EN

回答 1

Stack Overflow用户

发布于 2016-01-08 22:04:19

world_to_char()很可能是在main()之后定义的,添加了一个函数原型,它应该可以工作。所以在main()添加以下内容之前

代码语言:javascript
复制
char *world_to_char(char *dir, int number, char *ext);

无论如何,带有"java“样式char dir[]的参数都将成为指针,因此,让我们将它们改为char *dir来说明问题。

错误消息是由于隐式声明造成的,因为编译器在调用函数时没有看到声明,它假设函数返回int,因此将int分配给char *是从一个整数生成一个没有强制转换的指针。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34686878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档