Uint16 *Flash_ptr; //定义一个指向16位无符号整数的指针 ... Flash_ptr = (Uint16 *)0x00330000; //让Flash_ptr指向0x00330000 //注意这里做了个强制类型转换,也就是把0x00330000转成指向Uint16的地址
注意区分“指针变量保存的地址类型”和“地址索引位置保存的变量类型”。
简单说,Flash_ptr本身保存了一个地址值,这个值可以是32位的,也可以是48/64位的(对老掉牙的8086,也可以是16位的),一般来说总是等于处理器地址线宽度——从示例代码上看,DSP28335应该是32位地址线。
然后,Flash_ptr保存的那个地址值指向内存中一个地址,在这个地址里存了一个Uint16,也就是两字节的无符号整数。
注意,再强调一遍,Uint16 *Flash_ptr意思是Flash_ptr指向的、32位编址的地址索引的内存单元存了一个Uint16,并不是说Flash_ptr存的地址本身是16位的。