找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1716|回复: 12
打印 上一主题 下一主题
收起左侧

关于C语言函数参数传递的问题

[复制链接]
跳转到指定楼层
楼主
ID:705806 发表于 2022-2-2 00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在接触到了ucos之后第一次知道了可以通过函数的参数来获得数据,那入口参数和返回值有什么区别呢?求各位大佬指教在这个两个函数uint8_t ReadData(uint8_t byte)
{
byte = byta + 10;
return byte;
}

void ReadData(uint8_t byte,uint8_t* data);
{
*data = byte + 10;
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:827243 发表于 2022-2-2 08:12 | 只看该作者
如果只有一个返回值,这两个函数效果基本一样,只是调用方法不同

a=ReadData(bb)  和 ReadData(bb, &a)

但如果需要返回多个值,那只能用第二个办法了。
回复

使用道具 举报

板凳
ID:161164 发表于 2022-2-2 10:26 来自手机 | 只看该作者
如果只有一个数就没有分别,如果超过一个数就只能用参数
回复

使用道具 举报

地板
ID:883242 发表于 2022-2-2 12:27 | 只看该作者
形参实参的概念回去看教科书,这里一两句说不清楚。
回复

使用道具 举报

5#
ID:277550 发表于 2022-2-2 15:18 | 只看该作者
前面的是一般函数。后边的是直接通过变量地址存取值。
回复

使用道具 举报

6#
ID:705806 发表于 2022-2-2 15:54 | 只看该作者
daemondong 发表于 2022-2-2 08:12
如果只有一个返回值,这两个函数效果基本一样,只是调用方法不同

a=ReadData(bb)  和 ReadData(bb, &a)
...

谢谢大佬,那我以后就一直用第二个方法吧
回复

使用道具 举报

7#
ID:705806 发表于 2022-2-2 15:55 | 只看该作者
Hephaestus 发表于 2022-2-2 12:27
形参实参的概念回去看教科书,这里一两句说不清楚。

电子维修半路出家,就一本Cprimerplus入门  
回复

使用道具 举报

8#
ID:705806 发表于 2022-2-2 18:43 | 只看该作者
谢谢各位大佬的指教
回复

使用道具 举报

9#
ID:290373 发表于 2022-2-5 10:52 | 只看该作者
指针和形参实参概念,第一个是把值传进来,第二个是把要存放结果的地址传进来,直接对地址上的内容进行修改。
回复

使用道具 举报

10#
ID:491577 发表于 2022-2-5 12:22 | 只看该作者
羽翼之凋零 发表于 2022-2-2 15:54
谢谢大佬,那我以后就一直用第二个方法吧

尽量用第一种,方便模块化,第二种有出错的风险,特别是几个函数同时改变一个参数时有可能会出错。
回复

使用道具 举报

11#
ID:883242 发表于 2022-2-5 16:12 | 只看该作者
羽翼之凋零 发表于 2022-2-2 15:54
谢谢大佬,那我以后就一直用第二个方法吧

第二个方法未必通用,比如大多数场合只打算传递值,并不想要改变变量的值。
回复

使用道具 举报

12#
ID:587810 发表于 2022-2-5 21:09 | 只看该作者
uint8_t *data是指针指向的一个存储区域而uint8_t  byte则不是
回复

使用道具 举报

13#
ID:415064 发表于 2022-2-10 14:47 | 只看该作者
第一种是值传递,要开辟新的栈空间来存放这个形参,再把这个形参的数据返回去,再用调用的函数去接    第二种是指针传递,直接修改
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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