可以将字符串从指针数组转换为变量名吗?

时间:2017-12-29 07:41:36

标签: c arrays pointers

我正在寻找一个以字符串形式给出的数学方程式,如

指针数组
char* equations = {"n+1", "n+2", "n*n+3"}

我希望编译器将上面字符数组中的字符串视为变量,例如“n”是一个变量。因此,当我将此字符串分配给'int'时,它们将像这样的数学运算:

int a = n+1;  

我认为下面的方法可以工作,但它肯定不起作用,因为我们不能将指针的数组分配给int。即使它确实如此,但它只是采用A = 65的代码,但这不是我的要求:

a = equations[0];   //(compiler assume it like a = n+1)

3 个答案:

答案 0 :(得分:4)

编译器无法为您执行此操作,您必须将字符串解析为其组件(变量,常量,运算符),然后自行应用相应的操作。

答案 1 :(得分:1)

不,你想要的是不可能的,因为在C代码的编译版本中,"变量名" 的概念不存在。

如果你想要达到这种目的,你必须在进入编译部分之前这样做,即在预处理部分。

否则,一种更灵活的方式来实现你可能"想要使用函数指针(如"回调" ,如果你愿意的话)。您可以定义不同的函数来执行某些作业,然后在运行时,您可以选择要调用/调用的任何已定义的函数,并将结果收集到所需的变量中。

答案 2 :(得分:1)

有很多方法可以做到这一点,例如你可以解析每个表达式做一些模式匹配,然后从中创建和表达,这当然比说起来容易做起来容易。

但是我找到了一个我尚未测试过的图书馆可以做你想做的事情(或承诺这样做),这里是链接:

http://partow.net/programming/exprtk/index.html