Static is basically a storage class which is used to limit the scope of any function or process limited to that file and so that its value remain preserved and other function cannot change its value or value remain preserved during run time.
When a variable is declared as of static class, it's scope becomes limited to that particular file. That variable can not be used in other files. Also, the latest value acquired by that static variable will be revieved every time the routine enters that particular file.
Basically what happens , whenever we call any function in which we are returning an integer value , then value of this integer variable will there , but after calling the function this variable will destroy and also it's value... Now if you want that value should not destroy so that you can use this to a appropriate function then you must take the static variable , after making static this variable Value will never destroy during the numerous function calls or use..
1) they are initialized only once ,can be manipulated in a single program and get memory on compilation time in data segment or other data segment like BSS.