c declaring initialized, const, array or array of strings

Advertisements

I need some array of array of const strings.
This compiles just fine in C

char* names[] = {"John", "Adrian", "Mary", NULL};
char* towns[] = {"Paris", "London", "Amsterdam", "Madrid", NULL};
char** test[] = {names, towns, NULL};

Is there a shorter way to do them all in one, like this?

char** test[] = {{"John", "Adrian", "Mary", NULL}, {"Paris", "London", "Amsterdam", "Madrid", NULL}, NULL};

Gives a

warning: excess elements in scalar initializer

Thank you in advance!

>Solution :

You can use compound literal of array type from C99.

char** test[] = {(char*[]){"John", "Adrian", "Mary", NULL},
                 (char*[]){"Paris", "London", "Amsterdam", "Madrid", NULL},
                 NULL};

Leave a ReplyCancel reply