例1
#include <stdio.h>
struct Test
{
int Num;
char *pcName;
short sDate;
char cha[2];
short sBa[4];
}*p;
int main()
{
p = 0x100000;
printf("%p\n", p + 0x1);
printf("%p\n", (unsigned long)p + 0x1);
printf("%p\n", (unsigned int*)p + 0x1);
return 0;
}
析:
(1)p + 0x1,指针加1,加的是指针所指的结构体的大小,结构体的大小为20,加20转换为十六进制形式结果为00100014
(2)给指针p前面加上了(unsigned long),即将指针p强制转换为无符号长整型,加1后的结果为00100001
(3)给指针前面加上了(unsigned int*),即将指针强制转换为整型指针,加1即应加的是整形指针的大小4个字节,结果为00100004
例2
int main()
{
int a[4]={
1,2,3,4};
int *p1=(int *)(&a+1);
int *p2&#