松鼠呀 发表于 2020-2-7 16:56:40

指针的显示类型转换

为什么这样第一个写是对的,这样第二个写是错的?
#include<stdio.h>
int main()
{ short x,*p=&x;
unsigned char hi,lo;
scanf("%d",&x);
lo=*((unsigned char*)p);
hi=*((unsigned char*)p+1);
printf("HI=%x,LO=%x\n",hi,lo);
return 0;
}
第二个
#include<stdio.h>
int main()
{ short x,*p=&x;
unsigned char hi,lo;
scanf("%d",&x);
lo=((unsigned char*)p);
hi=((unsigned char*)p+1);
printf("HI=%x,LO=%x\n",*hi,*lo);
return 0;
}

最后的魁拔 发表于 2020-2-7 18:04:21

本帖最后由 最后的魁拔 于 2020-2-7 18:15 编辑

第二个o=((unsigned char*)p);先把p转换从指针类型,但是lo不是指针类型
第一个lo=*((unsigned char*)p);最外面有个*号,就相当于p所指向的那个值比如int i = 5; int * q;q = & i;*q =5

松鼠呀 发表于 2020-2-13 10:59:02

最后的魁拔 发表于 2020-2-7 18:04
第二个o=((unsigned char*)p);先把p转换从指针类型,但是lo不是指针类型
第一个lo=*((unsigned char*)p); ...

谢谢
页: [1]
查看完整版本: 指针的显示类型转换