I can't understand how the following structure elements are being initialized.MSG m = {4, 1, 0};. MSG has two elements: one is of type int and other one is an array of type short that's already been initialized. Which elements of m are assigned the values 4, 1 and 0?Here is the listing of the code taken from the book TCP IP in C 2nd Ed. (Page No. xi, Preface);typedef struct {    int a;    short s[2];} MSG;MSG *mp, m = {4, 1, 0};char *fp, *tp;mp = (MSG *) malloc(sizeof(MSG));for (fp = (char *)m.s, tp = (char *)mp->s; tp < (char *)(mp+1);)  *tp++ = *fp++;Although I've read over C a reference manual but I couldn't find the solution. I might have overlooked it but I can't proceed until I clear my understanding how the initialization is done where an element of m is a three element array of type short int itself. 
I can't understand how the following structure elements are being initialized
c