Once again, esbo shows how little esbo really knows about C.
You cannot and should not assign a 2D-array (char [x][y]) to a pointer-to-pointer (p2p, char**).
But it's quite simple.

A pointer is typically used to modify a variable that it found outside the function that modifies it (or to avoid copying of data).
So if we create a linked list, we need to store its address in a pointer, right? So then main, for example, passes in the address of the pointer we want to assign it to, so we do:

Code:
void foo(T** ptr);

int main()
{
    T* ptr;
    foo(&ptr);
}

void foo(T** ptr)
{
    *ptr = something;
}
See that? If you read from the right, first you see the variable name. Then you see the first *, saying it's a pointer. And to the left of that is the type it points to.
So ptr here pointers to a T*, or in other words, it points to a pointer.

Makes sense, yes? When you think of that the * binds to the type and not the name, it all makes sense.
http://www.research.att.com/~bs/bs_faq2.html#whitespace

And esbo, main returns int, not nothing. Plus globals variables are evil. Not to mention your (probably) faulty assignment of char[2][6] to ptr (which, again, we cannot see because you insisted on making it global), whose type is probably char**.