a good (the best) starting point is "SQL Server Internals" from Kalen Delaney. On Page 309 you find a pretty cool explanation of the row structure. Furthermore you will get a good information about row structures from Paul Randal here:
For my example the calculation is as follows:
4 Bytes for the record header
4 bytes for the ID column (int)
3 Bytes for the CCode column
10 Bytes for the ZIP column
2 Bytes for the number of columns
1 Byte for the NULL bitmap
24 Bytes for the record (uups i calculated in my previous answer wrong - thought 4 bytes for CCode 🙁 )
Due to the fact that no variable length column is present no additional bytes are used for them!
EVERY record has the same structure so you only have to subtract 10 bytes for the ZIP column from the above calculated size and you get the length of the record.
NOTE: This is a simplified example because I don't take into consideration a UNIQUE constraint for the indexe(s). That would burst this thread 🙂
Microsoft Certified Master: SQL Server 2008
MVP - Data Platform (2013 - ...)
my blog: http://www.sqlmaster.de (german only!)