c语言怎样实现在子函数中把读出的数据放在子函数中的参数中

[复制链接]
1890|10
 楼主| 醉心369 发表于 2014-1-14 10:49 | 显示全部楼层 |阅读模式
打算用c语言写一个函数,把从某地址读出的4个byte数据放在该函数的参数(buffer)中,然后通过该函数中的buffer数据进行后续处理。
例如
void readdata(long unsigned int addr,char *poutdata)
{
}
请大虾们给举个例子完善一下该函数,谢谢!
李富贵 发表于 2014-1-14 10:55 | 显示全部楼层
放*poutdata里面就行
ayb_ice 发表于 2014-1-14 13:24 | 显示全部楼层
void readdata(long unsigned int addr,char *poutdata)
{
        poutdata[0] = 1;
        poutdata[1] = 2;
        poutdata[2] = 3;
        poutdata[3] = 4;

}
 楼主| 醉心369 发表于 2014-1-14 14:03 | 显示全部楼层
ayb_ice 发表于 2014-1-14 13:24
void readdata(long unsigned int addr,char *poutdata)
{
        poutdata[0] = 1;

传参的指针变量的不是局部变量吗,在以后的应用中能直接使用poutdata吗
znmcu 发表于 2014-1-14 14:04 | 显示全部楼层
1、通过外部全局变量
2、通过参数中的指针
ayb_ice 发表于 2014-1-14 14:14 | 显示全部楼层
这个只是指针,指针是局部变量

但指针指向的空间是上一函数分配的,是有效的
dota_yy 发表于 2014-1-14 15:20 | 显示全部楼层
dirtwillfly 发表于 2014-1-14 21:52 | 显示全部楼层
使用的是指针传递变量的地址
sedatefire 发表于 2014-1-14 22:45 | 显示全部楼层
  1. void readdata(long unsigned int addr,char *poutdata)
  2. {
  3.      memcpy(poutdata, (void*)addr, 4);
  4. }
这是你想要的吗?
注意,这代码不能在C51中搞哦
C51,得这样
memcpy(poutdata, (void code *)addr, 4);
memcpy(poutdata, (void xdata *)addr, 4);
memcpy(poutdata, (void data *)addr, 4);
看你自己的需求了
zwz7219 发表于 2014-1-15 09:01 | 显示全部楼层
希望是你需要的

void ReadData(unsigned int Addr,char *pOutData, char Lenth)
{
    for (; Lenth > 0; Lenth--)
    {
        *pOutData++ = EepromRead(Addr++);
    }
}
明月小厨 发表于 2014-1-15 12:59 | 显示全部楼层
某地址读出的4个byte数据;
这4个数据应该先定义为一个数组;然后你得到数组的首地址,就可以直接处理它们了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

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