I just learned somthing new.
While I thought I knew what definiton and declaration meant I was wrong about definition. I assumed that defining a variable meant initializing it with a value but
char ch; is both a declaration and definition.
a definition associates a type with a name
in the above case this is a definition
for the definition there is an entity for the name to which it refers
for ch the entity is the appropriate amount of memory to be used as a variable
also any declaration that specifies a value is a definition (from this I assumed that if it doesn't it is not a definition)
(Strostrup, "C++ Programming Language")