#include    <stdio.h>
char**      StringArray ( int n_size )
{
    char*   astr_allocate[ n_size ];
    char**  pstr_string_array = astr_allocate;
    int n_count;
    for ( n_count = 0; n_count < n_size; n_count++ )
        *(pstr_string_array + n_count) = " ";
    *(pstr_string_array + n_size) = "\0";
    return  pstr_string_array;
}
char*       String      ( int n_size )
{
    char    ach_allocate[ n_size ];
    char*   str_string = ach_allocate;
    int n_count;
    for ( n_count = 0; n_count < n_size; n_count++ )
        *(str_string + n_count) = ' ';
    *(str_string + n_size) = '\0';
    return  str_string;
}
void main ()
{
    int n_size      = 5;
    int n_count     ;
    char*   pch_string  = String ( n_size );
    char**  pstr_string = StringArray ( n_size );
    for ( n_count = 0; n_count < n_size; n_count++ )
        printf  ( "%c", *(pch_string + n_count) );
    for ( n_count = 0; n_count < n_size; n_count++ )
        printf  ( "%s", *(pstr_string + n_count) );
    printf  ( "\n\n" );
}
This produces wonderful outputs of "???" (Literal question marks) and random stuff like that. I am just trying to understand pointers and string type stuff more, if someone could help out that would be great thankyou!
additionally: Been writing and compiling this in a linux terminal and nano, if that changes anything
 
     
    