Pointers are arrays in a sense. Here's a straightforward scenario. Say you were building a text editor. Lines and columns are both dynamic.
You might have an "array" of lines, and since they're dynamic, that would be a pointer. Then your columns would also be dynamic and might be contained inside of your line array. So in essence:
char **lines;
You would have to malloc your line first before adding characters, but this could provide a very crude means of an editor.
lines = malloc(num_of_lines_in_my_file);
lines[0] = malloc(num_of_chars_for_line_1);
Certainly not beautiful code, but hopefully it helps a bit to answer the question.