A typical problem is how to store an array of C-strings. C-strings are arrays of chars terminated by a zero value. How do we create an array of C-strings?
One common solution is to declare an array of pointers to C-strings, and dynamically allocate space for each of the C-strings.
char aWord[100]; // Temporary place to hold input string. char* words[1000]; // Array of pointers to c-strings int n = 0; // Number of words . . . while (cin >> aWord) { int len = strlen(aWord) + 1; // How much space is needed char* newSpace = new char[len]; // Allocate with new strcpy(newSpace, aWord); // Copy to new space words[n] = newSpace; // Save pointer in array. n++; } . . .
Because C-strings are arrays, an array of C-strings could be implemented as a two-dimensional array. This approach may be attractive if the strings are all close in size, because the row length must accomodate the longest string.