一、
char addr,i;
addr=0x30; //起始地址
for(i=0;i<16;i++)
{
*((char idata*)addr++)=i; //从起始地动址开始赋值
}
addr=0x30;
具体意思是:
首先addr自加一,因为++在变量后面,所以该表达式使用自加之前的值,比如第一次循环,表达式使用的addr是0x30.
第二步,将0x30强制转换为char idata类型指针。
第三步,解引用该指针,将i的值赋给该指针指向的地址
二、
char addr1,i;
addr = 0x2000;
addr1 = 0x30; //片内,片外存储区首地址分别为30H、2000H
for(i=0;i<16;i++)
{
*((char xdata*)addr++) = i; //给片外存储地址赋值