Simple test program unveiles the memory representation of the 3d array:
int main(void)
{
char x[3][3][3]={{"bad","had","rad"},{"bat","cat","hat"},{"hit","git","bit"}};
char *ptr = (char *)x;
for(size_t i = 0; i < sizeof(x); i++)
{
printf("x[%2zu] = '%c'\n", i, ptr[i]);
}
}
x[ 0] = 'b'
x[ 1] = 'a'
x[ 2] = 'd'
x[ 3] = 'h'
x[ 4] = 'a'
x[ 5] = 'd'
x[ 6] = 'r'
x[ 7] = 'a'
x[ 8] = 'd'
x[ 9] = 'b'
x[10] = 'a'
x[11] = 't'
x[12] = 'c'
x[13] = 'a'
x[14] = 't'
x[15] = 'h'
x[16] = 'a'
x[17] = 't'
x[18] = 'h'
x[19] = 'i'
x[20] = 't'
x[21] = 'g'
x[22] = 'i'
x[23] = 't'
x[24] = 'b'
x[25] = 'i'
x[26] = 't'