从函数返回一个指针

时间:2013-06-28 21:43:19

标签: c

以下语法对于从函数返回指针是否正确?

bmpfile_t*
bmp_create_from_file(const char *filename, bmpfile_t *bmp)
{
    FILE *fp;

    fp = fopen(filename, "r");
    bmp_get_header_from_file(fp, bmp);
    bmp_get_dib_from_file(fp, bmp);
    bmp_get_pixels_from_file(fp, bmp);
    fclose(fp);

    return &bmp;
}

1 个答案:

答案 0 :(得分:4)

bmp已经有类型bmpfile_t *,这是您想要返回的内容。所以只需return bmp

编辑:您当前尝试返回的内容&bmpbmpfile_t *的地址,因此类型为bmpfile_t **,指针指针。此外,正如其他人所指出的那样,&bmp将是bmp的地址,它是函数中的本地堆栈变量。当你从函数返回时会弹出这个,因此指针指向无用的东西。因此,您不仅会返回错误类型的内容,而且还会返回危险的内容。所以只需return bmp