Identifiers have scope, objects have a storage class, and variables have both. In this chapter, we discuss the difference between declarations and definitions, and how to determine the scope of identifiers and the storage class of objects.
Any identifier must be declared or defined before it is used.
Declaring a name means telling the compiler what type to associate with that name. The location of the declaration determines its scope. Scope is a region of code where an identifier can be used.
Defining an object, or variable, means allocating space and (optionally) assigning an initial value. ...