unsigned short *强制转换unsigned int *,另一个参数莫名被修改
代码很简单,如下。
结果很匪夷所思,输出为:
1: WAN
2: N
求解释
#include <stdlib.h>
#include <stdio.h>
void xxx(const unsigned char * msg, unsigned int * size)
{
*size = msg[6];
}
void main()
{
unsigned char a[8] = {'W', 'A', 'N', 31, 246, 0, 0, 15};
unsigned short d = 0xa5a5;
printf("1: %c%c%c\n", a[0], a[1], a[2]);
xxx(a, (unsigned int *)&d);
printf("2: %c%c%c\n", a[0], a[1], a[2]);
}