c语言中如何讲一个变量的值定义为一个新的变量名

guhong 2007-12-06 11:23:22
例如:
int I_test = 44;
我怎么能够通过定义一个变量,他的名字和I_test的值相关联,如:
char C_test_44;
当然这个定义是由程序来完成不是我手工输入的,不知道我表达得是否清楚?

那位大大了解的话,请赐教!
...全文
1092 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxwsbobo 2007-12-11
  • 打赏
  • 举报
回复
JF
霁云 2007-12-11
  • 打赏
  • 举报
回复
lz解释型语言和编译型语言分清楚

一些解释语言(PHP,VB),它并不是直接翻译为机器码,而是在运行时刻逐行翻译,所以它具有很大的灵活性,
甚至支持直接从文本中生成代码,如perl中eval,但是很明显效率上要低于编译型语言。

C语言作为一种编译型语言,运行时是将高级语言一次性转换为机器语言,所以编译时刻,运行时刻的行为和代码存在很大的差别(C++差异更加显著),
代码中变量名只是对于程序员的一种只读形式而已,它在运行时刻会被处理成为机器能够唯一识别标志符号(地址),可能包括各种特殊符号如$@等,

如你所说的根据一个变量值来生成一个变量名,C语言在编译时刻可判断这个变量值的地址,但是地址中的内容只有到运行时刻才能够判断出来,
所以C编译器无法在编译时完成你所需要的功能。

guhong 2007-12-11
  • 打赏
  • 举报
回复
上面的回复,不知道你什么意思。如果是我犯了基础性错误,我才疏学浅,请你指出。有什么指教请直接提出,不要这种阴阳怪气地回复。看不懂!
guhong 2007-12-11
  • 打赏
  • 举报
回复
呵呵,谢谢大家的回帖。非常感谢,尤其是23楼!
CUG87525842 2007-12-11
  • 打赏
  • 举报
回复
学习中,JF!
cangwu_lee 2007-12-08
  • 打赏
  • 举报
回复
LZ 還真是高人啊

來幾招讓我見識一下
wo_long 2007-12-08
  • 打赏
  • 举报
回复
不太可能,如果实现应该使用指针直接操作内存
tanmeining 2007-12-07
  • 打赏
  • 举报
回复
3楼所言极是,但不知道是不是楼主想要的...
linson_zhou 2007-12-07
  • 打赏
  • 举报
回复
通过宏定义来实现!
wangxipu 2007-12-07
  • 打赏
  • 举报
回复
正如3楼所言,实际上MFC中的好多的宏就是这么做的
guhong 2007-12-07
  • 打赏
  • 举报
回复
呵呵,非常感谢大家的回复!其实实现的方法有很多种,我只不过是想偷懒。

谢谢3楼的回复,不过宏里面使用的是变量名而不是变量值,不符合我的需求。

在php里面可以用下面的方法声明变量:
$aaa = "haha";
$$bbb = "hehe";

那么现在是存在2个变量,变量1 $aaa,他的值是 "haha", 还有一个变量 $haha ,他的值是"hehe"。

我是考虑在C里面是否可以实现上述的功能。

注意,在后续的代码中会使用你定义的这个变量值。自定义数据结构使用链表可以解决,我的想法是是否可以通过语言特性解决这个问题。

如果哪位高人有好点的实现还望不吝赐教。

谢谢!
r_swordsman 2007-12-07
  • 打赏
  • 举报
回复
使用指针就可以永远监视他的值了


#define VARIABLE_PAIR(type, name, value)\
type I_##name = value;\
type* C_##name##_##value = &I_##name;

r_swordsman 2007-12-07
  • 打赏
  • 举报
回复
改一下看看


#define VARIABLE_PAIR(type, name, value)\
type I_##name = value;\
type* C_##name##_##value = &I_##name;

Holinan 2007-12-07
  • 打赏
  • 举报
回复
楼主要将一个整型的作为一个char型的定义的一部分,这么做的意图可能是为了动态生成某个变量名,比如要定义一组动态的MenuItem,所以楼主可以先定义一个字符串数组,里面存MenuItem的Name.需要动态生成的时候之间将int I_test = 44;的值先转成一个字符串,然后再用字符串拷贝就可以实现动态命名了
飞哥 2007-12-07
  • 打赏
  • 举报
回复
目前好像也没有更好的办法了
pptor 2007-12-07
  • 打赏
  • 举报
回复
通过宏
##起连接的作用
变量名##(变量值转换成的字符串)
ttlyfast 2007-12-07
  • 打赏
  • 举报
回复
jf
就呆在云上 2007-12-07
  • 打赏
  • 举报
回复
##在宏定义里面就是连接的作用,呵呵
chlaws 2007-12-07
  • 打赏
  • 举报
回复
int 型的值 改变为char的值 数据都丢失了。。
jjfwenwenti 2007-12-07
  • 打赏
  • 举报
回复
#denfine ##
加载更多回复(6)

70,014

社区成员

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

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