【发布时间】:2014-02-12 05:17:29
【问题描述】:
我想将数据从一个内存地址复制到另一个内存地址,一次 752 个字节。如果没有 for 循环,我只能复制 752 个字节。我如何一次又一次地做 480 次,我需要增加我的目标地址,以便所有 752 字节的数据一个接一个地存储在目标内存块中。我怎样才能做到这一点?这是我想出的解决方案,但它不起作用请帮忙。谢谢。
volatile unsigned char *DAQ_BUFF = (unsigned char *)0xC6010000;
extern unsigned char *DAQ_BUFF;
unsigned char *Dest = (unsigned char *)0xC6020000;
int lv;
for(lv=0;lv<480;lv++)
{
memcpy(Dest,DAQ_BUFF,752);
Dest=Dest+752;
}
【问题讨论】:
-
你似乎没有前进
DAQ_BUFF? -
目标内存指向哪里??
-
为什么要分三部分抄?请缩进您的代码,这看起来很糟糕(部分原因是您不应该使用 TAB)。
-
你真的应该研究一些关于指针和引用的基础知识。您的变量
Dest已经是一个指针。您的变量DAQ_BUFF也是如此。由于memcpy需要一个指向 Destionation 和 Source 的指针,因此不需要对它们使用引用运算符。你实际上将char**传递给memcpy... -
首先感谢大家帮助我。是的,DAQ_BUFF 中的数据是从 FPGA(feild 可编程门阵列)读取的,我无法增加 DAQ_BUFF,因为从 fpga 传输到 dsp(数字信号处理器)的字节有限,即 acnt 受到限制。是否可以不增加 DAQ_BUFF 而只增加 Dest 以一次又一次地将相同的 DAQ_BUFF 数据存储到 Dest 中?
标签: c