以下のコードを実行してみたのですが、なぜrefとstructのサイズが違うのでしょうか?

void main(void)
{
  typedef struct {
    char str1;
    int digit1;
    double dot1;
  } TEST1;
  typedef union {
    char str2;
    int digit2;
    double dot2;
  } TEST2;
  TEST1 s;
  TEST2 u;
  char str;
  int digit;
  double dot;
  printf("ref:%d\nstruct:%d\nunion:%d\n",sizeof(str)+sizeof(digit)+sizeof(dot),sizeof(s),sizeof(u));