將整數數組寫入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顯示,就可以看到,寫入成功了