我在添加长值时遇到问题 示例
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 );
实际O / p = 0xFF910554
// shouldn't o/p be FF9102AA ?
答案 0 :(得分:5)
它的指针算术,所以
UINT16 *memory_loc_ver = flash_dest_ptr + data_length ;
将flash_dest_ptr
字节提升data_length * sizeof (UINT16)
。
通常,sizeof (UINT16)
为2,
2 * 0x2AA = 0x554
答案 1 :(得分:0)
当您将整数添加到指针值时,实际上是将指针移动到将data_length
UINT16
移出内存所需的字节数,而不是data_length
字节。