Hiiii..
When sizeof() is applied to the name of a static array the result will be the size of the whole array in bytes. Here the name of an array is converted to a pointer to the first element of the array.
Now when we pass this array as a Parameter to the function the receiving function variable is just the pointer , which will point the same array, we can not pass an array as Call by Value.
So "sizeof(msg)" will always display Size of a pointer.
For refrence see .:http://en.wikipedia.org/wiki/Sizeof and Stack