C学习笔记 11 指针的减法

假设:
  char*  p1 = ( char* )100;
  short* p2 = ( short* )p1++;
  int*   p3 = ( int* )p2++;
  p3++;

  请问:
  p1 = ____________
  p2 = ____________
  p3 = ____________
  p3 - ( int* )p1 = _____________
  ( char* )p3 - p1 = _____________
  ( short* )p3 - p2 = _____________
  ( char* )&p1[ -1 ] = _____________

这道题 char*  p1 = ( char* )100;
就把P1这个地址的值赋成100
然后 short* p2 = ( short* )p1++;
先把P1转成short类型的指针赋值给p2 只是赋值的时候转 P1本身还是CHAR类型的指针 所以再P1++就变成了101

P2 现在是100 因为是SHORT 占两个字节 所以P2++就成了102

P3 也被赋值为100 P3++就成了104

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章