In the following code I want to print a 3\*3 matrix with `o` filled in the boxes. But I don't get the desired output. If you run the program using a C99 compiler the first matrix output is what I expect and the second output is what I get. 

If instead of making an initializing function `init()` if I do the initialization in `main()` it works fine. But I don't know why the array isn't properly returned from `init()`so that I can use it as an argument in `display()` function.

```
 #include<stdio.h>
    char * init(int a)
    {
        char tic[a][a];
        for(int i=0;i<=(a-1);i++)
        {
            for(int j=0;j<=(a-1);j++)
            {
                tic[i][j]='o';
            }
        }
        display(a,tic);//This is extra code just to show what I desire to print through this program
        return (char * )tic;
    }

    int display(int a,char tic[a][a])
    {                                                                        
        for(int i=0;i<=(a-1);i++)   
        {
            for(int j=0;j<=(a-1);j++)                   
            {
                if(j==0)
                {
                    printf("\n-------------\n|");
                }
            printf(" %c |",tic[i][j]);
            }
        }
            printf("\n-------------");

            return 0;
    }

    int main()
    {
        int a=3;
        display(a,init(a));

        return 0;
    }

```