c语言中8位指针如何赋值给32位的指针

2024-11-06 08:02:02
推荐回答(3个)
回答(1):

指针和数据搞混了
pu8_a;pu32_b;为指针。u32_data是数据,所以这样写:
pu32_b = (uint32_t *)(pu8_a);

u32_data = (uint32_t *)pu32_b ;

在此之前,pu8_a指针必须已经赋值,例如pu8_a = &u8_data,即pu8_a指向u8_data的地址

回答(2):

u32_data = (uint32_t *)pu32_b ;
改成
u32_data = *pu32_b ;

回答(3):

不明白这样的需求,同一个运行环境中指针位宽都是一样的,如果你是想使用hack技术将指针拆分便于跨系统传递,可以如下处理:
int a=-10;
int *p=&a;//32位系统下指针位宽为32位
long pp=(long)p;//将指针强制转换为long(32位)
int ph=(pp>>16);//右移2字节取高16位
int pl=pp&0xffff;//掩码遮蔽掉高16位取低16位
cout<
评论
0
0
加载更多