请问单片机c语言中可不可以把一个字符串转化成变量名? 10

sbita1=P1^0;sbita2=P1^1;sbita3=P1^2;voidfunctionsetValue(unsignedchardt,unsignedchari... sbit a1=P1^0;
sbit a2=P1^1;
sbit a3=P1^2;
void function setValue(unsigned char dt,unsigned char index){
-----
}
这个函数功能是为前面声明的某个变量赋值,比如调用setValue(10,2),运行结果就是a2==10,这个问题的关键是怎样根据传递来的index值来设置对应的变量,我不希望用if else或switch之类的写法,因为实际应用中我可能有几十个这样的变量。用a+index或=dt
“a”+index=dt显然都不行,该怎么写呢,谢谢!
展开
 我来答
tty_0323
2013-08-28 · TA获得超过233个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:175万
展开全部
我以前也这样想过,后来发现用指针能解决,先定义unsigned a1,a2,a3,……;
然后定义一个指针unsigned char *p;
运行p=&a1;
setValue(x,y)
p+=y-1;
*p=x;
如setValue(10,2)
结果a2就是10;
不懂追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JuggYe
2013-08-28 · 超过25用户采纳过TA的回答
知道答主
回答量:141
采纳率:100%
帮助的人:40.3万
展开全部
字符串末尾追加,可以用strcat,将你传递来的index追加到字符a后面,但是这要求你传入的是字符型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
3147cqg
2013-08-28 · TA获得超过580个赞
知道小有建树答主
回答量:555
采纳率:37%
帮助的人:249万
展开全部
用数组代替你的变量。
例如:你需要10个变量。
unsigned char cTable[10];
void function setValue(unsigned char dt,unsigned char index)
{
cTable[index] = dt;
}
追问
这个我也想到过,但是网上都说sbit型不支持数组定义
追答

抱歉,题没看清。

如果可以,那你改变一下程序的结构:

typedef enum
 {
     PORT0,
     PORT1,
     PORT2,
     PORT3,
 }enPORT;
void function setValue(enPORT Pn,unsigned char dt,unsigned char index)
{
    switch (Pn) 
    {
       case  PORT0:
             if (dt == 1) P0 |= 1 << inde;
             else      P0 &= ~(1 << inde);
             break;
       case  PORT1:
             if (dt == 1) P1 |= 1 << inde;
             else      P1 &= ~(1 << inde);
             break;
    

     }  
 }

如有错误请指正。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式