but I don't know what type the pointer is.
Then, you are screwed. You can't store an array of pointers without knowing the type of the pointer.
Well, that is not technically accurate, since you could cast the pointer to type void *, but I really do NOT recommend that. There is a reason that C (and C++) is a strongly typed language.
This array is global
Not in the code you posted.
In the other function "reprint" I need to get this pointer address back from the global array and then access the array based on that pointer.
One assumption that you are making, that is incorrect, is that you can determine the size of the array that a pointer points to from just the pointer. You can't. So, somewhere, you also need to store the size of the array pointed to.
The String arrays will not change between their pointers being placed into the global array and being used. Certain events will completely clear all the arrays and we start again.
You REALLY ought to consider not using Strings at all.