定义一个指向char类型的指针p1和一个指向int型的指针p2,char占一个字节,int 占4个字节,%lx是输出的16进制的数
unsigned char* p1;
int *p2;
p1 = (unsigned char*)0x801000;
p2 = (int *)0x810000;
printf("%lx,%lx\n", p1 + 5, p2 + 5);
根据上述程序,p1的首地址是0x801000,p1每次加1,指针移动一个字节,地址值加1 。p2的首地址是0x810000,p2每次加1,指针移动4个字节,地址值加4 。它们的地址值变化过程如下图:
程序执行结果: