All right: so far the concern here has been with the concept of a C function, and an outline of how they can be defined and used. Now we need to get down to some more nitty gritty specifics!
In general, if we want to decompose a program into a set of functions then, for the functions to co-operate or interact properly they will need to, in some sense "share" data between them. By "data" here I essentially mean variables. How can the required data sharing be achieved?
C supports two quite different models for sharing or exchanging data between functions. We will consider them in turn.