You will not be able to change the text for each name doing it this way, but you can change the pointer in the flags_on array to point to another name, as long as it is also defined as a const char array.
The flags_on array can be created with as many elements as you like, any unused elements can be set to empty strings.
The text literals "(name1)", "name2", etc, are constant char arrays.
When you create a pointer to a constant, it needs to be declared as const, so that the compiler knows that the pointer should not be used to modify the object that it points to.
The array, flags_on, is not constant. The pointers in the array can be changed to pointers to different constant char arrays, so you could do something like this:
flags_on[1] = "another name";
If you actually wanted the flags_on array to be constant, it would be declared like this:
If you want to be able to edit the strings themselves, instead of using pointers you can use a two-dimensional array. Note that the second dimension needs to be large enough to hold the largest text that will ever be put into any of the elements, along with an extra character for the terminating null.