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

[复制链接]
3901|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++?
 楼主| jianghuoo00 发表于 2011-12-5 07:56 | 显示全部楼层
4# diweo
哦,我是想让num值每次加一,读一次地址加一次。放前面的话,感觉不太合适,就放那了。。请指教
yewuyi 发表于 2011-12-5 08:25 | 显示全部楼层
4# diweo  
哦,我是想让num值每次加一,读一次地址加一次。放前面的话,感觉不太合适,就放那了。。请指教
jianghuoo00 发表于 2011-12-5 07:56


放在后面根本就不会被执行。
 楼主| jianghuoo00 发表于 2011-12-5 09:05 | 显示全部楼层
6# yewuyi
嗯,确实。谢谢指教。顺便请教下,不知道如何能够明显看出24c02写进去没有,读出来的就是从写进去的读的。
兰天白云 发表于 2011-12-5 09:26 | 显示全部楼层
写进去后再读出校验是比较可靠的验证方法
 楼主| jianghuoo00 发表于 2011-12-5 13:27 | 显示全部楼层
8# 兰天白云
嗯,谢谢指教~我再看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

98

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部