标题: 小白求教C语言子函数参数问题 [打印本页]

作者: bfdz    时间: 2021-12-10 16:42
标题: 小白求教C语言子函数参数问题
这样写法的子函数名   void I2C_write_byte(uchar date)  小括号中的   uchar date  

和在子函数内的这种写法 有什么不同
void I2C_write_byte()
{
     uchar date;
    ............
}


作者: 天ノ忆    时间: 2021-12-10 17:28
不同点就是上面那个是date是形式参数,你可以通过这个参数在调用的时候直接传递变量,而下面的date只是函数内的局部变量,在调用的时候,只能执行date固定的值
作者: bfdz    时间: 2021-12-10 17:39
本帖最后由 bfdz 于 2021-12-10 17:42 编辑
天ノ忆 发表于 2021-12-10 17:28
不同点就是上面那个是date是形式参数,你可以通过这个参数在调用的时候直接传递变量,而下面的date只是函数 ...

感谢老师!

这就是说用上面的那个我可以在主函数或其他的函数赋值或调用 date

用下面的那个date就不可以了,

是可以这样理解的吧
作者: bfdz    时间: 2021-12-10 18:09
感谢老师!

这就说上面的那个date我可以在主函数或其他的函数赋值或调用

而下面的那个date只能在自己的函数内使用,其他的函数都不能使用它

我可以这样理解对吧


作者: 188610329    时间: 2021-12-10 18:37
唉…… ,这是传参的问题。
void I2C_write_byte(uchar date)  小括号中的   uchar date   是传递的参数,主函数中调用时必须要给参。
比如:   I2C_write_byte(0x00);
又或者:  I2C_write_byte(0x80);

以 I2C_write_byte(0x80); 为例
你可以把这种操作,看成是:
先  data = 0x80;
然后执行函数中的其他操作。

void I2C_write_byte()   是不传参,主函数中调用不能传参
比如:  I2C_write_byte();
这种操作是没有任何参数的,


作者: bfdz    时间: 2021-12-10 18:47
188610329 发表于 2021-12-10 18:37
唉…… ,这是传参的问题。
void I2C_write_byte(uchar date)  小括号中的   uchar date   是传递的参数, ...

感谢!!!

明白了,
我是搞模电的,对单片机这是刚接触,感觉模电跟编程区别太大了,好多基础的知识都不懂,以后还请各位老师不吝赐教
作者: 郑汉松    时间: 2021-12-11 15:26
括号中的uchar date叫做参数,作用是从外部把数据传进去函数里面。函数中里面的uchar date叫做局部变量。
作者: 天ノ忆    时间: 2021-12-11 15:51
bfdz 发表于 2021-12-10 17:39
感谢老师!

这就是说用上面的那个我可以在主函数或其他的函数赋值或调用 date

建议先去学C语言基础,嵌入式这方面硬件是一部分,可以学模电数电之类,软件方面一般C是基础,有余力学学汇编,学好汇编挺有用的




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