This method requires using a pointer to a pointer (double pointer) in an ineffective way - note the allocation of the array of char pointers of size 10. This allocated an array for 10 character pointers. This array is actually 40 bytes in size, since each element is 4 bytes (size of pointer)
We then iterate through all 10 items and allocate a 260 byte char array to each item.
Note the change of parsing to your read and print functions. We could also have parsed a double pointer (char **) instead of (char * q[]) ...
Also note the deletion of each array item and also the array itself.
This adds alot of coding overhead and would personally use a vector of strings instead of the array of character arrays.