0

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

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;
}
4

1 回答 1

4

bmp已经有 type bmpfile_t *,这是你想要返回的。所以只是return bmp

编辑:您当前试图返回&bmp的是 a 的地址bmpfile_t *,因此具有 type bmpfile_t **,一个指向指针的指针。此外,正如其他人所指出的,&bmp将是 的地址bmp,它是函数中的本地堆栈变量。当您从函数返回时,这将被弹出,因此该指针将指向无用的东西。因此,您不仅返回了错误类型的东西,而且还返回了危险的东西。所以只是return bmp

于 2013-06-28T21:48:32.577 回答