Because the sample struct is passed by value, the size of the structure can't be changed without also changing the function signature and breaking backwards compatibility. This prevents adding new fields in the future, to support some new features. When passing the sample struct by reference using a pointer, the size of the pointer does always remains the same.