c语言内存位移询问
c语言吧
全部回复
仅看楼主
level 1
cyubin10 楼主
已知一个U8指针p所指的内存地址存储内容十六进制表示如下:
0X30 0X31 0X32 0X33 0X34 0X32 0X00 0X33 0X00 0X34 0X00 0X35 0X00
按照存储我们可以知道p[0]=0X30;p[4]=0X34.
假如我将该指针加5即p=p+5
然后强制转换为U16那么p1[0]为多少?
代码如下:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
typedef unsigned char kal_uint8
typedef unsigned short int kal_uint16
int main()
{
kal_uint8 *p=NULL;
kal_uint16 *p1=NULL;
kal_uint8 p2[250]={0X30,0X31, 0X32, 0X33, 0X34, 0X32, 0X00, 0X33, 0X00, 0X34, 0X00, 0X35};
p=p2;
p=p+5;
p1=(kal_uint16*)p;
printf("%X",p1[0]);
}
请问结果是多少?为什么?
已知编译环境为小端。
2013年10月19日 07点10分 1
level 13
0x0032,没有为什么
2013年10月19日 07点10分 2
1