C# C+中的变量名+; 对于C++,考虑下面的伪代码: int sampleFunction (int selector) { int var_1 = ............ ; int var_2 = ............ ; return var_[selector]; }

C# C+中的变量名+; 对于C++,考虑下面的伪代码: int sampleFunction (int selector) { int var_1 = ............ ; int var_2 = ............ ; return var_[selector]; },c#,c++,c,arrays,matlab,C#,C++,C,Arrays,Matlab,最后一行相当于代码: if (selector == 1) { return var_1; } else if (selector == 2) { return var_2; } 但是我需要在运行时使用另一个变量(selector)计算变量名。 如何做到这一点?还有,C语言呢 我通常使用MATLAB命令eval来执行此操作。 此外,在C#中,这可以通过反射实现 int sampleFunction (int selector) { int var_[] = {1, 2};

最后一行相当于代码:

if (selector == 1)
{
  return var_1;
}
else if (selector == 2)
{
  return var_2;
}
但是我需要在运行时使用另一个变量(
selector
)计算变量名。 如何做到这一点?还有,C语言呢

我通常使用MATLAB命令
eval
来执行此操作。 此外,在C#中,这可以通过反射实现

int sampleFunction (int selector)
{
    int var_[] = {1, 2};

    return var_[selector];
}

其中1和2分别是
var_1
var_2
的值。

C++和C都是编译语言。运行时不存在变量名。这使你的想法完全不可能

C#是编译的,但反射的程度有限。类型名是可用的,但我不认为变量名是可用的。所以你运气不好的原因基本上是一样的


MATLAB是解释的,所以编译时和运行时之间没有区别,因此它确实有可用的变量名。代价是MATLAB速度慢。

为什么不首先将所有内容存储在一个数组中?也许你可以详细说明你最终想要实现什么。这听起来像是一个X-Y问题。@MatthiasB:X-Y问题的根源几乎总是现实世界中的一个实际问题。5个标签暗示了一个理论问题,所以不是X-Y。所以问题是具体地,而且只关于有选择的东西,比如“代码> VARXXX”/CUD>,其中代码> XX X/CUT>是运行时变量。那么,这不可能是在普通C++中。@ MAFSO或“代码> STD::MAP< /Cord>。我不知道C++,但是声明数组
静态
在C.@downhillFromHere中是有益的:而且通常是错误的。而且只对旧编译器有用。谢谢。但是你误解了我的问题。我的第一段代码只是一段伪代码<代码>变量[选择器]
不是一个数组。您可以使用给定的示例进行越界访问,例如
选择器
1
2
(而不是
0
1
)。回答得很好。你明白我的意思了。非常感谢。你有证据表明C++不能使用一些工作来做吗?@ HeshamEraqi:嗯,你已经发布了明显的解决方法。