How does assignment operator work on a 2D character array? : For the below code snippet , I am not getting how can we assign a value to 
names[1][2] since it returns the address of the 2nd column in Row 1 ,so how can we assign names[2][1] which returns address of column 1 in Row 2 to names[1][2] ?  
I am unable to get how can one column address can be stored in another column address .

what is the significance of the statement :

> names[1][2]=names[2][1] ;   // what is it doing

    int main()
    {
    char names[3][20]={"success","gateway","engineers"};
    int i;
    char *t;
    t=names[1][2];
    names[1][2]=names[2][1];
    names[2][1]=t;
    for(i=0;i<=2;i++)
    printf("%s  ",names[i]);
    return 0;
    }

