对于计算机而言,存储的都是“字节数据”,帮你存、帮你取,从哪儿读、读多少、怎么解读这些数据你随意。
int i = 88888888;
#include <stdio.h>
int main(int argc, char *argv[])
{
int i1 = 88888888; //00000101 01001100 01010110 00111000
short *p2 = (short *)&i1;
printf("%d\n",*p2); //p2 = 22072 二进制数为后面加粗部分: 00000101 01001100 01010110 00111000
p2++;
printf("%d\n",*p2); //p2 =1356 二进制数为后面加粗部分:00000101 01001100 01010110 00111000
pchar *ch = (char *)&i1;
printf("%d,%d,%d,%d\n",ch[0],ch[1],ch[2],ch[3]);
printf("%d,%d,%d,%d\n",*(ch+0),*(ch+1),*(ch+2),*(ch+3)); //ch[n] = *(ch+n)
//ch[0] = 56 二进制数为后面加粗部分:00000101 01001100 01010110 00111000
//ch[1] = 86 二进制数为后面加粗部分:00000101 01001100 01010110 00111000
//ch[2] = 76 二进制数为后面加粗部分:00000101 01001100 01010110 00111000
//ch[3] = 5 二进制数为后面加粗部分:00000101 01001100 01010110 00111000
return 0;
}
输出:
22072
1356
56 86 76 5
完成代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i1 = 88888888;
short *p2 = (short *)&i1; //获得指针地址并转为short类型指针
printf("%d\n",*p2);
p2++;
printf("%d\n",*p2);
char *ch = (char *)&i1; //char *ch = &i1 等价于 char *ch = (char *)&i1; 获得指针地址并转为char类型
printf("%d,%d,%d,%d\n",ch[0],ch[1],ch[2],ch[3]);
printf("%d,%d,%d,%d\n",*(ch+0),*(ch+1),*(ch+2),*(ch+3)); //ch[n] = *(ch+n)
/*
int nums[] = {11,22,33,44,55};
printf("%d,\n",nums[3]);
int *p = nums;
printf("%d,\n",p[3]);
printf("%d,\n",*(p+3));
*/
return 0;
}