Reading bytes from a file on SD Card - Understanding Buffer
You don't have to, it's just one way of doing it.

Basically the read function needs a pointer to a buffer to store the data in.  By using an array with one entry you get a pointer to a buffer that is big enough for one (32-bit) integer. And you then get an "easy" way of accessing that one integer within that buffer.

Another way would be to just use a simple integer and pass a pointer to that integer to read:

uint32_t width; // Use a fixed size integer for portability
bitmap.seek(18);
bitmap.read(&amp;width, sizeof(width)); // Use sizeof for portability
Serial.println(width);