关于C语言不同类型指针+1的坑
在实际开发中,我们往往忽略掉指针的实际运算,可能只有在做面试题够严谨的情况下,才会想起
测试:unsigned int*、unsigned char*、unsigned short*指针分别+1的结果
int main()
{
unsigned char * p_1=0x00;
unsigned short * p_2=0x00;
unsigned int * p_4=0x00;
printf("byte=0x%1x,word=0x%2x,four_byte=0x%4x\n",p_1+1,p_2+1,p_4+1);
p_1=0x00+0x1;
p_2=0x00+0x1;
p_4=0x00+0x1;
printf("byte=0x%1x,word=0x%2x,four_byte=0x%4x\n",p_1,p_2,p_4);
return 0;
}
打印结果为
char型指针+1、short型指针+2、int型指针+4,其实大家可以把他们当成各类型数组的元素+1,就很好理解了
注意:所以在对地址赋值或者累加的时候要注意