The general rule is that a T* points to an object of size
sizeof( T ).
»Static« means that the size of the buffer is known at
compile time. ...
As a general rule in this newsgroup, when using a term for which the C
standard provides it's own definition, it's best to avoid the confusion
that can be caused by using that term with a conflicting meaning. Jokes
to the contrary notwithstanding, the C standard only provides a few
different definitions for 'static', and that isn't one of them.
A C term that comes close to that meaning is defined in 6.2.5p23: "A
type has _known constant size_ if the type is not incomplete and is not
a variable length array type." I've used underscores to indicate that
"known constant size" is italicized, and ISO convention indicating that
this sentence defines the meaning of that phrase.
Let's assume the size is 75. In this case, one
can statically encode the buffer size in the pointer type:
void f( char( * const buf )[ 75 ])
For instance, 'buf' is 'static' according to your definition, but is
isn't 'static' according to any of the C standard's several definitions.
However, *buf does have a known constant size.