Вы создаете серию указателей на struct Color
, но не инициализируете ни один из них, поэтому, поскольку они определены в области видимости файла, для них все установлено значение NULL.Затем вы пытаетесь разыменовать эти нулевые указатели.Это вызывает неопределенное поведение .
Вместо указателей вы должны определить экземпляры этих структур вместо:
struct Color {
unsigned char R;
unsigned char G;
unsigned char B;
} blue, red, green, yellow, purple, pink, brown;
Затем обращаться к ним как к экземплярам:
void CreateColors()
{
blue.R = 0;
blue.G = 0;
blue.B = 255;
red.R = 255;
red.G = 0;
red.B = 0;
...
Еще лучше, избавьтесь от функции инициализации и инициализируйте их в точке, в которой они определены:
struct Color {
unsigned char R;
unsigned char G;
unsigned char B;
};
struct Color blue = { 0, 0, 255}, red = { 255, 0, 0 }, green = { 0, 255, 0}, ...