若有 unsigned char *p1;
unsigned long *p2;
p1 = (unsigned char *)0x1000;
p2 = (unsigned long *)0x2000;
请问 p1+5=( ) p2+5=( )
#include <stdio.h>
int main()
{
unsigned char *p1;
unsigned long *p2;
p1 = (unsigned char*)0x1000;
p2 = (unsigned long*)0x2000;
printf("%x\n", p1 + 5);
printf("%x\n", p2 + 5);
return 0;
}
解析:p1指向字符型,一次移动一个字符型,1个字节;p1+5后移5个字节,16进制表示为5;
p2指向长整型,一次移动一个长整型,4个字节,p2+5后移20字节,16进制表示为14。
{ char每次移动1个字节;short移动2个字节;int ,long ,float移动4个字节;double移动8个字节}