lidexiang
驱动牛犊
驱动牛犊
  • 注册日期2002-12-08
  • 最后登录2004-12-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1529回复:7

能举一个关于返回数组的例子吗?

楼主#
更多 发布于:2004-11-08 10:56
能举一个关于返回数组的例子吗?
比如有一个方法test,要返回一个BYTE[8]的数组,这要怎么写?
并且如何调用这个方法?
BYTE[8] test()
{
 ......
}
......
lake
驱动小牛
驱动小牛
  • 注册日期2001-09-04
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-08 11:13
你可以用返回数祖的指针来用嘛
(void*) test(  ) ;
char BYTE[8] ;
char *ptr ;
ptr = ( char*) test() ;
( void * ) test()
{
    return BYTE ;
}

lidexiang
驱动牛犊
驱动牛犊
  • 注册日期2002-12-08
  • 最后登录2004-12-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-08 11:19
人家的方法是上面这样:
BYTE IP_ADAPTER_INFO::Address[8]
这样得到好像就是错的:
BYTE addr[8];
addr = IP_ADAPTER_INFO::Address;
lucaer
驱动老牛
驱动老牛
  • 注册日期2004-09-21
  • 最后登录2007-09-26
  • 粉丝0
  • 关注0
  • 积分518分
  • 威望60点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-08 12:44
路过看一下
只要回帖,别忘给分。 支持灌水,多多送分。 [img]http://www.hotik.com/sign.png[/img]
chhj001
驱动牛犊
驱动牛犊
  • 注册日期2004-11-08
  • 最后登录2009-01-04
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-08 13:24
使用数组指针!
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-08 13:26
人家的方法是上面这样:
BYTE IP_ADAPTER_INFO::Address[8]
这样得到好像就是错的:
BYTE addr[8];
addr = IP_ADAPTER_INFO::Address;
------------------------------------------------------------
hoho 你这样不可以的

还是这样吧:

memcpy( addr, IP_ADAPTER_INFO::Address, sizeoft(BYTE)*8 );

如果从函数中返回就用
BYTE *GetData(BYTE *pDest)
{
     if (NULL == pDest) return NULL;

     BYTE *p = (BYTE*)pDest;

     if (NULL == p) return NULL;

     memcpy( p, IP_ADAPTER_INFO::Address, sizeoft(BYTE)*8 );
     p = NULL;

     return pDest;
}
lidexiang
驱动牛犊
驱动牛犊
  • 注册日期2002-12-08
  • 最后登录2004-12-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-08 13:58
char  buffer[11];
int count  = sprintf(
buffer,
"%02X-%02X-%02X-%02X-%02X-%02X",
(unsigned char)pAdapterInfo->Address[0],
(unsigned char)pAdapterInfo->Address[1],
(unsigned char)pAdapterInfo->Address[2],
(unsigned char)pAdapterInfo->Address[3],
(unsigned char)pAdapterInfo->Address[4],
(unsigned char)pAdapterInfo->Address[5]);

我现在改成这样。
但还有个问题。因为这边是一个char  buffer[11];
上面的代码有循环,但不知道循环次数。
如何保存buffer?
是做一个足够大的数组,还是用指针?
如何用指针?
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-08 14:55
char  buffer[11];
int count  = sprintf(
buffer,
"%02X-%02X-%02X-%02X-%02X-%02X",
(unsigned char)pAdapterInfo->Address[0],
(unsigned char)pAdapterInfo->Address[1],
(unsigned char)pAdapterInfo->Address[2],
(unsigned char)pAdapterInfo->Address[3],
(unsigned char)pAdapterInfo->Address[4],
(unsigned char)pAdapterInfo->Address[5]);

我现在改成这样。
但还有个问题。因为这边是一个char  buffer[11];
上面的代码有循环,但不知道循环次数。
如何保存buffer?
是做一个足够大的数组,还是用指针?
如何用指针?


如果用来显示就可以这样
for (int id=0; id<n; id++)
{
    printf("%02X-",(unsigned char)pAdapterInfo->Address[id] );
}
//输出最后一个
printf( "%02X", (unsigned char)pAdapterInfo->Address[n] );

我想其它的要求也可以这样类推
游客

返回顶部