giantlin
驱动牛犊
驱动牛犊
  • 注册日期2004-06-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1508回复:3

问指针赋值

楼主#
更多 发布于:2004-10-14 22:16
基础不好啊,有个简单问题问各位大侠
定义并初始化了5000*5000大小 的二级指针**ori和25000000的一级指针*buffer
 int i,j;
  ori=(BYTE **)new BYTE *[5000];
   for (i=0;i<5000;i++)
   {ori=(BYTE *)new BYTE[5000];}
设已经给buffer赋了值,问如何把buffer里的值都赋给ori啊?
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-14 22:32
看看这样能不能解决你的问题

int id = 0;
int it = 0;

for (int ir=0; ir < 5000; ir++)
{
    for (it = 0; it < 5000; it++)
    {
        ori[ir][it] = buffer[id];
        id ++;
    }
}
giantlin
驱动牛犊
驱动牛犊
  • 注册日期2004-06-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-16 20:24
谢谢,是,还有一种方法
for ( i=0; i<5000; i++)
   for( j=0; j<5000; j++)
       *( *(ori+i)+j)=*(buffer++);
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-16 22:51
你这样会减慢执行速度,每次都要跳变指针,看看这样行不行
int id = 0;
int it = 0;

BYTE *pori1 = ori, pori2 = NULL;
BYTE *pbuf = buffer;

for (int ir=0; ir < 5000; ir++)
{
''''pori2 = (*pori1);
''''//memcpy(pori2, pbuf, 5000); 用这个替换下面的循环是不是更快?
''''//pbuf += 5000;
''''for (it = 0; it < 5000; it++)
''''{
''''''''*pori2 = *pbuf;
''''''''id ++;
''''''''pbuf ++;
''''''''pori2 ++
''''}
''''pori1 ++;
}

pori1 = NULL;
pori2 = NULL;
pbuf  = NULL;
游客

返回顶部