If you take a look in bmp.h, which is included as a header file to copy.c, you'll see a definition for structures named RGBTRIPLE:
typedef struct
{
BYTE rgbtBlue;
BYTE rgbtGreen;
BYTE rgbtRed;
} __attribute__((__packed__))
RGBTRIPLE;
So a triple has 3 variables in it of type BYTE. BYTE is defined in the header of the same bmp.h:
#include <stdint.h>
/**
* Common Data Types
*
* The data types in this section are essentially aliases for C/C++
* primitive data types.
*
* Adapted from http://msdn.microsoft.com/en-us/library/cc230309.aspx.
* See http://en.wikipedia.org/wiki/Stdint.h for more on stdint.h.
*/
typedef uint8_t BYTE;
SO: BYTE was explicitly defined as 8 bits of data via stdint.h, which is our standard idea of what a byte is anyway.
The structure called RGBTRIPLE therefore has 3 variables, each using 1 byte of space, for a total of 3 bytes.
We could change the size of an RGBTRIPLE by changing its definition in the bmp.h file, although I suspect we would also need to make some adjustments to our file/info headers.