C++ 如何将RGBQUAD作为参数传递?

C++ 如何将RGBQUAD作为参数传递?,c++,c,visual-studio,C++,C,Visual Studio,作为一个学习练习,我试图将一个RGBQUAD作为参数传递给一个只会使结构成员变黑的方法。调用“black_quad”时程序崩溃。我哪里做错了 void UpdateFields() { RGBQUAD quad; black_quad(&quad); /* snip */ } void black_quad(RGBQUAD* quad) { quad->rgbBlue = 0; quad->rgbGreen = 0; qu

作为一个学习练习,我试图将一个RGBQUAD作为参数传递给一个只会使结构成员变黑的方法。调用“black_quad”时程序崩溃。我哪里做错了

void UpdateFields() 
{
    RGBQUAD quad;
    black_quad(&quad);
    /* snip */
}

void black_quad(RGBQUAD* quad) 
{
    quad->rgbBlue = 0;
    quad->rgbGreen = 0;
    quad->rgbRed = 0;
}

很难说——你的问题似乎在别处。 以下代码经过测试并可在win7 gcc 4.7中使用

#include <windows.h>

void black_quad(RGBQUAD* quad)
{
    quad->rgbBlue = 0;
    quad->rgbGreen = 0;
    quad->rgbRed = 0;
}
void UpdateFields()
{
    RGBQUAD quad;
    black_quad(&quad);
}

int main()
{
    UpdateFields();
}
#包括
无效黑色四元(RGBQUAD*四元)
{
四元->rgbBlue=0;
四元->rgbGreen=0;
quad->rgred=0;
}
void UpdateFields()
{
RGBQUAD;
黑色四线组(四线组和四线组);
}
int main()
{
UpdateFields();
}

请描述您知道而我们看不到的内容。崩溃是什么样子的?“我哪里出了问题?”代码中没有显示。你能提供一些上下文吗?正如上面所写的,它不应该崩溃。你是这样写的,还是简化了?例如,可能
quad
实际上是通过指针传递到
UpdateFields
,在运行时指针要么为
NULL
,要么在某种程度上无效?好吧,当我注释掉对black\u quad的调用时,程序运行良好,当它没有注释掉时,程序将运行,并崩溃,就像缓冲区溢出一样,windows错误报告窗口弹出..调试时会发生什么?