将整数数组写入0x40003000开始的连续10个字节内存单元中,注意unsigned char *指向一个字节,而int *指向1个字(4个字),但是可以把字中存储的整数放入字节单元中,只要不超过表示的范围,注意虽然unsigned char *是指无符号的字节指针,但是它也可以指向有符号的数,有没有符号无所谓啦,只要是指向1个字节的指针即可,所以是char*也行,试过了。
//数据写入存储器
void WriteToMemory(int *pSnAddr,int nCnt,unsigned char *pDnAddr)//或者 char*
{
int i;
if (nCnt<=0) return;
for(i=0;i<nCnt;i++)
{
*pDnAddr++=*pSnAddr++; //将pSnAddr指向的字节单元数据写入pDnAddr指向的字节单元
//pSnAddr加1,pDnAddr加1
}
}
int main()
{
int i;
int buffer[10]={23,-24,45,1,2,-7,6,8,5,-3};
int readbuffer[10]={0};
WriteToMemory((int *)buffer,10,(unsigned char *)0x40003000);/ /或者 char*
return 0;
}
在codewarrior中实验结果如下
在ARMUL仿真对象下运行后,右键,format 选择decimal显示,就可以看到,写入成功了