免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 14190 | 回复: 27
打印 上一主题 下一主题

[C] [问题] c语言中,能否实现用变量名字符串,代换出变量来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-28 16:43 |只看该作者 |倒序浏览
比如有

  1. char s[]="abc";
  2. int abc = 5;
复制代码


能否根据字符串s的内容,得到 变量abc中的值?

在其它的一些语言中,可以实现这个功能,比如:
在vb中

  1. result = Eval(expression)
复制代码


在shell中

  1. v1=aaa
  2. v2=bbb
  3. c=1
  4. if [ $c -eq 1 ]
  5. then
  6.   vname=v$c   #找到符合条件的变量名为v1
  7.   eval vvv="$"$vname ; echo vvv: $vvv    #将变量v1的值赋予vvv,即,使vvv=aaa
  8.   eval vvv='$'$vname ; echo vvv: $vvv    #将变量v1的值赋予vvv,即,使vvv=aaa
  9. #eval vvv=$$vname   ; echo vvv: $vvv    #错误用法
  10. fi
复制代码


在dbaseIII、foxbase、foxpro中:

  1. ? &s.
  2. 或者
  3. ? eval(s)
复制代码


以上语言,都是解释型或者是伪编译的。
而在c语言,因为 int abc=5,实际上abc是一个地址的名字,跟字符串"abc"风马牛不相及。我猜想可能很难实现吧。

明天是初8,各位老大都上班了,就当是新年小菜, 帮忙讨论一下吧。谢谢。

论坛徽章:
0
2 [报告]
发表于 2004-01-28 18:36 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

楼主要实现什么呀???

我有点不明白你的意思!!!

是不是要把变量abc的值赋给s呀???

在dbaseIII、foxbase、foxpro中:

? &s.
或者
? eval(s)  

上面可以实现把变量中的值替换出来!!!

论坛徽章:
0
3 [报告]
发表于 2004-01-28 18:37 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

别的语言能实现的,C当然能实现了。


不过我可不会,呵呵,觉得挺有意思的。你为什么要这样用呢?

不过肯定是用指针了,用指针的指针吧,我大脑不够用,想不明白。

论坛徽章:
0
4 [报告]
发表于 2004-01-28 22:35 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

[quote]原帖由 "wangrujun" 发表:

以上语言,都是解释型或者是伪编译的。
而在c语言,因为 int abc=5,实际上abc是一个地址的名字,跟字符串"abc"风马牛不相及。我猜想可能很难实现吧。

明天是初8,各位老大都上班了,就当是新年小菜, 帮忙讨

论坛徽章:
0
5 [报告]
发表于 2004-01-29 08:38 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

原帖由 "衍水狂客" 发表:
楼主要实现什么呀???

我有点不明白你的意思!!!

是不是要把变量abc的值赋给s呀???

在dbaseIII、foxbase、foxpro中:

? &s.
或者
? eval(s)  

上面可以实现把变量中的值替换出来!!!


我的意思是,在除了C以外的很多语言,只要知道变量的名字,就可以把变量的值代换出来.

比如我有一个字符串 s,它的内容是"abc",我就可以通过s,得到变量abc的名字

论坛徽章:
0
6 [报告]
发表于 2004-01-29 08:42 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

原帖由 "win_hate" 发表:


你说的是 hash 表, 要自己编程实现, 找本数据结构的书看一看就明白了. 或者用现成的工具产生代码, 如 gnu 的 gperf .


您说用hash表?就是把所有的可能用到的变量的地址都存进去?这样工作量太大了吧。

而且如果我引用变量的地址是动态malloc到的怎么办呢?

不知道我理解的对不对。谢谢您

论坛徽章:
0
7 [报告]
发表于 2004-01-29 10:03 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

我想不太可能吧,如果按照上面的定义,就好像abc的变量名被用字符串定义了,但c语言是编译语言(不是解释性的)在代码编译时,变量预先被分配了存储空间,而要访问他必须访问他的地址,这个过程在第一次变异就编译完了。这个代码,编译器分配了char s的空间,abc只是存在s中的值,不能当作变量名来处理,我想是这样,不然的话,系统岂不是非常的不安全,因为一不小心就有可能对系统的数据进行更改。

论坛徽章:
0
8 [报告]
发表于 2004-01-29 10:29 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

确实不能用C语言实现,因为C是编译执行的,而你的例子都是解释执行的,对吧?

论坛徽章:
0
9 [报告]
发表于 2004-01-29 11:25 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

不可以直接读变量吗???

论坛徽章:
0
10 [报告]
发表于 2004-01-29 12:43 |只看该作者

[问题] c语言中,能否实现用变量名字符串,代换出变量来

我也觉得这个问题确实有难度,也许就是解决不了的问题。

本版的各位版主还没出手,我先顶一下吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP