Even after reading the whole thread, I'm still not sure I understand what the OP is asking for.
It's possible that Perl or Python could do it, since they can more freely convert between string and numeric types, and they have builtin string types and an eval function:
http://en.wikipedia.org/wiki/Eval#Perl
It's possible that Objective-C could do it, maybe using Key Value Coding:
http://developer.apple.com/mac/libr...Conceptual/KeyValueCoding/KeyValueCoding.html
It's also possible that all the OP wants is a way to use C strings assembled at runtime as keys in a table, to retrieve a particular array calloc'ed at runtime, that's then subscripted using numeric variables. In that case, CoreFoundation's strings, dictionaries, and arrays would probably work.
Frankly, it's hard to know what's needed here, because we don't know anything about the problem that's being addressed, only about the OP's particular approach to solving it.
To farmerdoug, please be more specific about the types (string or number) involved. Take your original statement:
Say I have several arrays A1, A2, A3. I want to make strings A1, A2, A3, that can be used to address elements in the arrays.
This is ambiguous at best.
Every array and every variable has a type. If the array A1 has type "array of string", then anything stored into it or read from must be a string. Conversely, if an array A2 has type "array of float", then it can only contain floats, which are a particular numeric type. A2 can't store int or long types, except by first converting to float, and it can't store string types at all.
So the first sentence, "Say I have several arrays A1, A2, A3." is missing an important qualifier: What types are the arrays?
The second sentence begins, "I want to make strings A1, A2, A3, ". Aha, so A1, A2, and A3 are arrays of strings using a single subscript.
The rest of the sentence, "... that can be used to address elements in the arrays." then defines the rest of the problem. But it doesn't give any examples. Exactly what would one of these strings be? Would the string "A1[n]" work? How about "A1[n+3]"?
Since we have no examples, and you haven't described even a tiny fraction of the data, there's simply no context in which to understand the problem to solve, much less how to propose a solution to that problem.
I'm still thinking that C is not the best language for doing this program. It's too low-level. You're having a lot of trouble just doing fundamental stuff like creating and freeing the arrays. That's usually a bad sign.
Other languages like Perl or Python have builtin honest-to-$deity string types, not just C's array-of-chars-masquerading-as-strings. They also have builtin types for dictionaries and associative arrays (i.e. arrays subscripted by any type, not just numbers). And they don't need low-level memory management like calloc() and free(). Best of all, with CPU speed and memory as plentiful as they are, these languages are plenty fast.