找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 931|回复: 7
收起左侧

小白求教C语言子函数参数问题

[复制链接]
ID:477441 发表于 2021-12-10 16:42 | 显示全部楼层 |阅读模式
这样写法的子函数名   void I2C_write_byte(uchar date)  小括号中的   uchar date  

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

回复

使用道具 举报

ID:139866 发表于 2021-12-10 17:28 | 显示全部楼层
不同点就是上面那个是date是形式参数,你可以通过这个参数在调用的时候直接传递变量,而下面的date只是函数内的局部变量,在调用的时候,只能执行date固定的值
回复

使用道具 举报

ID:477441 发表于 2021-12-10 17:39 | 显示全部楼层
本帖最后由 bfdz 于 2021-12-10 17:42 编辑
天ノ忆 发表于 2021-12-10 17:28
不同点就是上面那个是date是形式参数,你可以通过这个参数在调用的时候直接传递变量,而下面的date只是函数 ...

感谢老师!

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

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

是可以这样理解的吧
回复

使用道具 举报

ID:477441 发表于 2021-12-10 18:09 | 显示全部楼层
感谢老师!

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

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

我可以这样理解对吧

回复

使用道具 举报

ID:624769 发表于 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();
这种操作是没有任何参数的,

回复

使用道具 举报

ID:477441 发表于 2021-12-10 18:47 | 显示全部楼层
188610329 发表于 2021-12-10 18:37
唉…… ,这是传参的问题。
void I2C_write_byte(uchar date)  小括号中的   uchar date   是传递的参数, ...

感谢!!!

明白了,
我是搞模电的,对单片机这是刚接触,感觉模电跟编程区别太大了,好多基础的知识都不懂,以后还请各位老师不吝赐教
回复

使用道具 举报

ID:514901 发表于 2021-12-11 15:26 | 显示全部楼层
括号中的uchar date叫做参数,作用是从外部把数据传进去函数里面。函数中里面的uchar date叫做局部变量。
回复

使用道具 举报

ID:139866 发表于 2021-12-11 15:51 | 显示全部楼层
bfdz 发表于 2021-12-10 17:39
感谢老师!

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表