首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-04 
c语言中如何讲一个变量的值定义为一个新的变量名例如:int I_test 44我怎么能够通过定义一个变量,他的名

c语言中如何讲一个变量的值定义为一个新的变量名
例如:
int I_test = 44;
我怎么能够通过定义一个变量,他的名字和I_test的值相关联,如:
char C_test_44;
当然这个定义是由程序来完成不是我手工输入的,不知道我表达得是否清楚?

那位大大了解的话,请赐教!

[解决办法]
应该不行
变量值是在运行时刻判断的,而变量名是在编译时刻生成的,
如果仅仅只是变量名字的关联那还比较好弄,只需要用宏和连字符就可以实现

C/C++ code
#define VARIABLE_PAIR(name, value)\int I_##name           = value;\int C_##name##_##value = value;void main(){    VARIABLE_PAIR(test, 44);    cout << I_test << "\t" << C_test_44 << endl;}
[解决办法]
C++中可以用引用去定义一个变量的新名称

int a = 5;
int &b = a;
此时b就是a的引用,对b操作,其实就是对a操作

在c语言中没有类似这样的定义,只能用指针去实现这种功能
但是引用和指针是不同,引用不能重复指定,但是指针可以
所以为了增加代码的可读性可以定义一个const指针,使指针无法被修改
这样其实就达到了引用的目的,当然还是会有点区别的,毕竟指针不是引用

看到楼上用了宏去定义了多个变量,但实际这几个变量虽然值和原来的是相同的
但是其内存地址却是完全不同的,这完全违背了引用的初衷!

楼主没有完全表明你的意图,但是个人理解,应该是想实现一个既定变量的别名
在c中只能是靠指针了!

int a = 5;
int *b const = &a;


[解决办法]
lz解释型语言和编译型语言分清楚

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

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

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

热点排行