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

 

 

 

 

 

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