怎么动态生成变量名并使用

如何动态生成变量名并使用
假设我有从其他人拿来的头文件,里面有如下形式的变量定义
char * a1="aaaaaaaa";
char * a2="bbbbbbb";
char * a3="ccccccccc";
............
char * an="nnnnnnn";
变量命名规则都是char * an
n值是从1到n的数字,n我知道。
问题:如何依次遍历a1到an
想要类似如下的用法
for(int i=0;i<n;i++)
{
    //此处如何获取ai的值?
}
------解决方案--------------------
弄个指针数组不行么?
------解决方案--------------------

#include "stdafx.h"
#include "conio.h"

#define a(n) a##n

int _tmain(int argc, _TCHAR* argv[])
{
int a1 = 10;

a(1) = 20;


return 0;
}

------解决方案--------------------
同意用指针数组:

char *ap[] = {
    "aaaaaaaa",
    "bbbbbbb",
    "ccccccccc",
    ......
    "nnnnnnn",
};
你这里不需要知道大小:
for (int i = 0; i < _countof(ap); i++)
{
    // ap[i]
}
用宏那种,只能一行行写死索引来引用。
------解决方案--------------------
vector<vector<CString>>这样行不行
------解决方案--------------------
引用:
Quote: 引用:

弄个指针数组不行么?

实际类型不是char*,比这个复杂,是多维数组,且最后一维数组长度不定还差异很大。如果做数组会浪费很多存储空间。

自己做个数组啊,没要你改他的头文件做数组。
要是只是遍历一次的话,就没必要了,干写代码吧
------解决方案--------------------
遍历头文件??
我想这个是不可能的,这些都是编译期的标识符

当然,你要是分析变量名的话,你可以编程读取这个文件
------解决方案--------------------
在程序开始运行时,所有变量名早已消失,只剩下内存地址留在程序中待使用
所以想在程序运行时处理变量名是不可能的,C/C++没有反射机制,如果有类似需求请转java
根本解决方法是修改自己的程序设计,如果是别人的代码不好改,可以自己写一个小程序来生成针对它的处理代码,再将这段生成的代码插入主代码中
------解决方案--------------------
c、c++不支持lz这样的需求,lz可以将an转换a[n]处理
------解决方案--------------------
引用:
Quote: 引用:

弄个指针数组不行么?

实际类型不是char*,比这个复杂,是多维数组,且最后一维数组长度不定还差异很大。。


你懂指针吗?明白指针的含义吗?

节省空间是要保证程序能正常运行其功能的前提
你是来编程的,还是来节省空间的
------解决方案--------------------
假设如果可能……(说白了有前置条件)你可以添加如下代码:

char* a[] = {a1,a2,a3,a4,a5,...., an}; // 有多少写多少

那么你就可以使用 for循环了,与四楼比,没有本质区别,但应该不会累死人