There is no difference between memory size for
static int a,b,c; int a;int b;int c;
Differences occur in life, location, region and initialization.
Lifetime: if they were announced globally, they would be a, b, c throughout the life of the program. If they were both in function, then static would exist for the lifetime of the program, while the others would exist only for the duration of the function. In addition, if the function is called recursively or repeatedly, there are many sets of non-static a, b, c.
Location A common, not required C, is the presence of a DATA section and a STACK section. Global variables, as a rule, relate to DATA, as well as to functional static. The non-static version of the function a, b, c in a function is usually included in STACK.
Scope: simple view: functionally declared variables (static or not) are limited inside the function. Static global variables are file sizes. Global variables that are not declared static are program-wide.
Initialization: follows the same path as the time of life. Declared globally declared a, b, c, static or not, both are initialized when the program starts. If a, b, c are in a function, only static ones are initialized (when the program starts). Functional non-static values a, b, c are not initialized.
Optimization can affect location, especially for functional non-static a, b, c, which can be easily stored in registers. Optimization can also determine that a variable is not used and does not optimize it, taking 0 bytes.