标题: 求大佬指点:单片机C语言函数参数小问题,谢谢 [打印本页]

作者: 我,菜鸡    时间: 2021-10-16 17:03
标题: 求大佬指点:单片机C语言函数参数小问题,谢谢
因为最近芯片缺货,原GD32F103的芯片拟用GD32F303的芯片替换,测试的时候出现问题,C12和A15两个输入(按键)引脚出问题(应该是串扰),
现象是:通过外设寄存器看按键时对应IO口的状态是完全正常的;但在跑程序的时候,单独按键A15是可以正常动作的;如果先按1下C12就相当于,按下C12后紧接着按了1下A15(实际上只按了1下C12),然后按键A15没有反应。

找问题的时候设断点,到了下面的程序:
void PcanshuDisplay(uint8_t value)    // 函数1
{  DisplayData[0] = value;

}


void UcanshuDisplay(uint8_t value)    // 函数2
{  DisplayData[0] = value;

}




我想请问一下:
1.  (uint8_t value)作为这两个函数的参数,是分别不同的参数,还是同一个参数?

2.  DisplayData[0] = value;  这里的这个“value”是对应函数里的(uint8_t value)这个参数吧?
     谢谢!


作者: fj51hei    时间: 2021-10-16 21:13
这个应该叫形参吧!把它当成局部参数理解应该可以 , DisplayData[0] = value;  这里的这个“value”是对应函数里的(uint8_t value)这个参数  是的
作者: Y_G_G    时间: 2021-10-17 11:38
1.  (uint8_t value),这个是在函数声明时用的,它只能代表当前的函数(作用域),也就是说它的作用只在这个函数后面的{}内
所以,这是两个形参,是不同两个形式参数
2,value  这个是对应函数里的value

这是C语言的基本知识,实在不理解的话,单片机随意改动,烧录验证就知道怎么回事了
作者: 我,菜鸡    时间: 2021-10-18 16:55
fj51hei 发表于 2021-10-16 21:13
这个应该叫形参吧!把它当成局部参数理解应该可以 , DisplayData[0] = value;  这里的这个“value”是对应 ...

谢谢指点!
作者: 我,菜鸡    时间: 2021-10-18 16:58
Y_G_G 发表于 2021-10-17 11:38
1.  (uint8_t value),这个是在函数声明时用的,它只能代表当前的函数(作用域),也就是说它的作用只在这个函数 ...

感谢指点,我开始是这样想的,但是因为始终找不出参数value在什么时候变的,所以有点怀疑了。
作者: wojiaoguogai    时间: 2021-10-18 19:16
1.value是函数的形参,这个value的值由调用的地方传入,传入啥这个value就是啥
作者: 我,菜鸡    时间: 2021-10-19 08:08
wojiaoguogai 发表于 2021-10-18 19:16
1.value是函数的形参,这个value的值由调用的地方传入,传入啥这个value就是啥

谢谢,了理解了。
作者: 郑汉松    时间: 2021-10-19 09:02
(uint8_t value)作为这两个函数的参数,value可以看成是函数的局部变量,是不同的,两个参数互不影响




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1