I felt I was a bit grey in this aspect and I found this : http://www.phim.unibe.ch/comp_doc/c_...age_class.html.

He says,
"static' can also be defined within a function. If this is done, the variable is initalised at compilation time and retains its value between calls. Because it is initialsed at compilation time, the initalistation value must be a constant. "

I just tried out a simple code where I didnt initialise the static variable. I was expecting some warning to be displayed when I compiled it with the -Wall option. Instead the static variable was initialised to 0.
Can anyone shed some light on this.

Here's the code :

Code:
 # include<stdio.h>

int func()
{
        static int i;
        i++;
        return (i);
}


int main()
{
        int count=0;
        while(count < 5) {
                printf(" count :%d, func = %u\n",count,func());
                count++;
        }

        return 0;
}
And the output :

Code:
 count :0, func = 1
 count :1, func = 2
 count :2, func = 3
 count :3, func = 4
 count :4, func = 5