我在添加长值示例时遇到问题
typedef unsigned short UINT16;
UINT16* flash_dest_ptr; // this is equal to in hexa 0XFF910000
UINT16 data_length ; // hex = 0x000002AA & dec = 682
//now when I add
UINT16 *memory_loc_ver = flash_dest_ptr + data_length ;
dbug_printf( DBUG_ERROR | DBUG_NAVD, " ADD hex =0x%08X\n\r",memory_loc_ver );
Run Code Online (Sandbox Code Playgroud)
实际O/p = 0xFF910554
// shouldn't o/p be FF9102AA ?
Run Code Online (Sandbox Code Playgroud)
这是指针算法,所以
UINT16 *memory_loc_ver = flash_dest_ptr + data_length ;
Run Code Online (Sandbox Code Playgroud)
flash_dest_ptr
按data_length * sizeof (UINT16)
字节前进.
通常,sizeof (UINT16)
将是2,和
2 * 0x2AA = 0x554
Run Code Online (Sandbox Code Playgroud)