0
#define MAXLINELENGTH   8192

 struct Image {
unsigned int height;
unsigned int width;
unsigned int value;
unsigned int maxValue;
unsigned int data[MAXLINELENGTH];
 };


 Image *Image_Init ()
 {
    Image *tmpImage;
    unsigned int data[MAXLINELENGTH];
    //if(tmpImage != NULL)

    //{
    tmpImage->height = 0;
    tmpImage->width = 0;
    tmpImage->value = 0;
    tmpImage->maxValue = 0;
 for (int i = 0; i < MAXLINELENGTH; i++)
{
    tmpImage -> data[i] = data[i];
}
//tmpImage.data = {};
//return &tmpImage;
//}

return tmpImage;
   }

unsigned int    Image_Get_Height (Image *img)
 {
Image *tmpImage;
int UINT_MAX;
UINT_MAX = tmpImage.height;

//int UINT_MAX;
//UINT_MAX = img.height;
return UINT_MAX;
}

发生错误,我不知道如何修复它。

c:73: 错误:在 'tmpImage' 中请求成员 'height',它是非类类型 'Image*'

请帮助解决此错误。

4

2 回答 2

1
Image *tmpImage;
/* ... */
UINT_MAX = tmpImage.height;

这里有两个问题。第一个是语法错误,您使用点.来访问指向结构的指针的成员,因此您应该使用->.

第二个问题更严重,那就是您将使用未初始化的指针,这可能(并且可能会)在运行程序时导致崩溃。

于 2013-09-24T08:19:39.323 回答
1

UINT_MAX是一个标准的 DEFINE,它是一个不可修改的值,甚至int UINT_MAX是无效的,因为UINT_MAX将被实现的最大整数值替换,所以你会说

unsigned int    Image_Get_Height (Image *img)
 {
    Image *tmpImage;
    int 4294967295;
    4294967295= tmpImage.height;

    //int UINT_MAX;
    //UINT_MAX = img.height;
    return 4294967295;
}

这是无效的;)

它本身的错误只是说您尝试通过一个.不正确的点访问结构指针成员,因为它必须使用->运算符访问,正如 Joachim Pileborg 在他的回答中所说。

于 2013-09-24T08:22:55.943 回答