精品理论电影在线_日韩视频一区二区_一本色道精品久久一区二区三区_香蕉综合视频

指針運算終于明白了

發(fā)布時間:2011-09-16 共1頁

導(dǎo)讀:本文介紹指針運算,任何數(shù)值一旦被強制轉(zhuǎn)換,其類型就改變了。

  struct Test

  {

  int Num;

  char *pcName;

  short sDate;

  char cha[2];

  short sBa[4];

  }*p;

  假設(shè)p 的值為0x100000。如下表表達式的值分別為多少?

  p + 0x1 = 0x___ ?

  (unsigned long)p + 0x1 = 0x___?

  (unsigned int*)p + 0x1 = 0x___?

  p + 0x1 的值為0x100000+sizof(Test)*0x1。至于此結(jié)構(gòu)體的大小為20byte,前面的章節(jié)已經(jīng)詳細講解過。所以p +0x1 的值為:0x100014。

  (unsigned long)p + 0x1 的值呢?這里涉及到強制轉(zhuǎn)換,將指針變量p 保存的值強制轉(zhuǎn)換成無符號的長整型數(shù)。任何數(shù)值一旦被強制轉(zhuǎn)換,其類型就改變了。所以這個表達式其實就是一個無符號的長整型數(shù)加上另一個整數(shù)。所以其值為:0x100001。

  (unsigned int*)p + 0x1 的值呢?這里的p 被強制轉(zhuǎn)換成一個指向無符號整型的指針。所以其值為:0x100000+sizof(unsigned int)*0x1,等于0x100004。

百分百考試網(wǎng) 考試寶典

立即免費試用