Actually, Mytosus's approach is valid, except that the "array to store the chars" should store pointers to char instead. Given the base of an array, the index stored in the first array acts as an offset. The first string will be at offset 0, the next at *(baseAddressOfArray + arrayOfIndices[1]), then *(baseAddressOfArray + arrayOfIndices[2]), and so on. The char* array can store pointers to these locations directly, effectively producing an array of C-style strings.