Hiiii..
When sizeof() is applied to the name of an 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 StackStack