要变量名循环的话,该怎么处理?

cglee 2005-08-29 04:11:18
例如程序中,有
a0,a1,a2,a3,...,a8,a9,等这样的变量名称,
要是在循环里该怎么处理,而不必一个一个写出所有的名字,
可以和数组a[i]一样循环?
...全文
508 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicholasfor 2005-08-30
  • 打赏
  • 举报
回复
用简单的方法是无法实现的,把变量值转化成变量名相当于将字符串变成表达式,难度可想而知。
不过仔细想想这种做法也无意义,因为每个变量都要定义过的,那这样的话还是定义数组方便一些,比挨个定义每一个变量好多了吧。

楼上那么多高手都无法解决。我也只好人云亦云了。
gaogc 2005-08-30
  • 打赏
  • 举报
回复
在循环语句中,用String对象将a和1、2、3、4、......、9连接起来,然后就可以用了,具体我也没实践过,自己试一试了。呵呵!
cglee 2005-08-30
  • 打赏
  • 举报
回复
好像很难啊,最好的方法就是变通用数组了。
以前看过一个游戏的程序,有过类似的用法,
用到宏定义及“##”,但它是用来定义什么的,倒忘了
akun 2005-08-30
  • 打赏
  • 举报
回复
xxx a1,a2..a9;
xxx *a[9] = {&a1,&a2,&a3..&a9}

用*a[i] 代替 ai吧~
Bobby136 2005-08-30
  • 打赏
  • 举报
回复
当然没有人会这么用!
Bobby136 2005-08-30
  • 打赏
  • 举报
回复
全局变量可以如下
int a0=1,a1=2,a2=3,a3=4,a4=5,a5=6;
int a6=7,a7=8,a8=9,a9=10;
int main()
{
for(int i=0;i<10;i++)
{
cout<<*(((int*)&a0)+i)<<endl;
}
return 0;
}
xiaocai0001 2005-08-30
  • 打赏
  • 举报
回复
楼上的也只是利用,局部变量分配空间是连续的这一特性,但如果不是连续的呢?

这种作法可不可靠还是一个问题,最好不要用
Bobby136 2005-08-30
  • 打赏
  • 举报
回复
局部变量可以实现

int a0=1,a1=2,a2=3,a3=4,a4=5,a5=6;
int a6=7,a7=8,a8=9,a9=10;
for(int i=0;i<10;i++)
{
cout<<((int*)&a9)[9-i]<<endl;
}
now123 2005-08-30
  • 打赏
  • 举报
回复
基本上

这个

很难!!

应该是不可能的。
leehq 2005-08-30
  • 打赏
  • 举报
回复
C是比较低级的语言,所以你想都不要想这种东西!
xiaocai0001 2005-08-29
  • 打赏
  • 举报
回复
楼上:
这样不行的~~
确实用宏定义 ##可以连接串
比如
#define a(i) a##i

在程序中若有 a(2)则宏替换成 a2
但想要
for(int i=0; i<10; i++)
a(i) = i;
//这样是不行的, 宏替换在程序运行前操作的,它会把a(i)替换成ai而不是根据i的值来替换
shenpipi 2005-08-29
  • 打赏
  • 举报
回复
define和##也不能完全实现.
jixingzhong 2005-08-29
  • 打赏
  • 举报
回复
楼住的这个问题我曾经仔细想过,结论是....

有一个办法可以连接数字,但是,有一个问题,着个数字不知道要求是不是固定的,能不能说根据程序来设计一个递增...

关键是用 ## 来连接:

#define ... a ## n ... (糊涂了 ,好象是 ## 连接的吧 )

其中的 N 做一个改变 ,比如递增
这个只是我的想法,不知道可不可以 ....
shenpipi 2005-08-29
  • 打赏
  • 举报
回复
似乎很多人都有这种想法.
K 2005-08-29
  • 打赏
  • 举报
回复
int a[100];
for (int i=0;i<100;i++)
a[i]=i;

int a1,a2,a3,a4,a5,a6;//...
a1=0;
a2=1;
a3=2;
a4=3;
a5=4;
a6=5;//...
lujun-cc 2005-08-29
  • 打赏
  • 举报
回复
没见过的用法!
bugebear3 2005-08-29
  • 打赏
  • 举报
回复
对,用数组
梦里饭香 2005-08-29
  • 打赏
  • 举报
回复
在javascript中可以这样实现:
String s="a";
for(int i=0;i<10;i++){
s=s+1;
s="int "+s+"="+i;
eval(s);
}
类似这样,可能有细节问题。
java中不知道能不能这样实现
megaboy 2005-08-29
  • 打赏
  • 举报
回复
做不到的,没有标识符化这样的东西。

变通一下就是用a[i]这种形式了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧