gpt4 book ai didi

c - 在C程序中我们可以让一个变量的名字成为一个变量吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:07 25 4
gpt4 key购买 nike

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

最佳答案

没有。您所说的是反射,一种访问环境内部细节的方法。 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;

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

但是,老实说,一旦您不得不做那样黑暗和狡猾的事情,您最好还是使用更合适的数据结构来做。

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

关于c - 在C程序中我们可以让一个变量的名字成为一个变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12365657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com