打印

请教两个函数区别。。。带返回值与不带的

[复制链接]
2904|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jianghuoo00|  楼主 | 2011-12-3 08:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面两个函数都是I2C读取24c02的,一个函数有一个变量和一个返回值,一个有两个变量.感觉那个返回值的应该可以代替那个参数,为什么在调试时有些问题。请教下区别,第一个带返回值的怎么改跟第二能够一样呢?
1.///////////////////
uchar read_add(uchar add)
{
uchar *num;
start();
writebyte(0xa0);
testack();
writebyte(add);
testack();
start();
writebyte(0xa1);
testack();
*num=readbyte();
stop();
return (num);
num++;
}
2.///////////////////////
void Read_2402(uchar add,uchar *num)
{
start();
writebyte(0xa0);           // send device address
writebyte(add);    //send unit address
start();            //start I2C again
writebyte(0xa1);
  *num=readbyte();
num++;
stop();
}
沙发
yewuyi| | 2011-12-3 08:55 | 只看该作者
参变量不能当返回值,如果不考虑全局变量等,第一个函数是没法改成第二个格式的。

使用特权

评论回复
板凳
jianghuoo00|  楼主 | 2011-12-3 09:10 | 只看该作者
2# yewuyi
嗯,谢谢ye大侠。
那如果一个函数没有变量的话,可以用返回值。以为那个只是跟参变量有关就行,只是返回一个参数值,不影响其他的。这样的话,第一个函数是不是就算是语法错误,函数编的就不对呢?

使用特权

评论回复
地板
diweo| | 2011-12-3 17:45 | 只看该作者
第一个函数你都return了,下面还来num++?

使用特权

评论回复
5
jianghuoo00|  楼主 | 2011-12-5 07:56 | 只看该作者
4# diweo
哦,我是想让num值每次加一,读一次地址加一次。放前面的话,感觉不太合适,就放那了。。请指教

使用特权

评论回复
6
yewuyi| | 2011-12-5 08:25 | 只看该作者
4# diweo  
哦,我是想让num值每次加一,读一次地址加一次。放前面的话,感觉不太合适,就放那了。。请指教
jianghuoo00 发表于 2011-12-5 07:56


放在后面根本就不会被执行。

使用特权

评论回复
7
jianghuoo00|  楼主 | 2011-12-5 09:05 | 只看该作者
6# yewuyi
嗯,确实。谢谢指教。顺便请教下,不知道如何能够明显看出24c02写进去没有,读出来的就是从写进去的读的。

使用特权

评论回复
8
兰天白云| | 2011-12-5 09:26 | 只看该作者
写进去后再读出校验是比较可靠的验证方法

使用特权

评论回复
9
jianghuoo00|  楼主 | 2011-12-5 13:27 | 只看该作者
8# 兰天白云
嗯,谢谢指教~我再看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

98

帖子

1

粉丝