在C程序中,我们可以将变量的名称变为变量吗?

MK *_*ngh 1 c

例如:就像我有一个变量char str[3]="abc";那么我可以使用这个"abc"作为另一个变量的名称(比如一个整数),这样我就可以存储任何值abc.如果是,那么在这样存储'abc'中的值时: int abc=123; 我可以通过引用来将abc称为变量str吗?

pax*_*blo 5

不,你所说的是反思,一种获取环境内部细节的方法.C目前没有内置到该语言中.

有一些方法可以实现相同的效果,例如从字符串到整数指针的映射数据结构,但它有点混乱.举个例子:

int abc, def;
char *strName[] = {"abc", "def"};
int *address[] = { &abc, &def};
:
char *key = "def";
int newVal = 42;

for (i = 0; i < sizeof (strName) / sizeof (*strName); i++)
    if (strcmp (key, strName[i]) == 0)
        *(address[i]) = newVal;
Run Code Online (Sandbox Code Playgroud)

这将通过键列表,直到找到匹配的键,然后使用地址列表中的等效指针来修改变量.

但是,老实说,一旦你不得不做一些黑暗和狡猾的事情,你可以用更合适的数据结构来做.

例如,一个映射,其中值存储在实际映射中,而不是保存"外部"整数的地址.

  • @MKSingh它也可以在PHP中使用.所以呢? (4认同)