多益筆試 位元組對齊

2021-07-22 02:16:30 字數 1105 閱讀 6544

struct *p;

p=0x1000000;

p+0x200=?

(unsigned long*)p+0x200=?

(unsigned char*)p+0x200=?

分析:本題考察位元組對齊

來了解一下位元組對齊:

struct aa{

char a;

int b;

char c;

}aa;

sizeof(aa)=12;

1 _ _ _ 4 1 _ _ _

注意有時候大家以為為9

,但結構體的有效對齊值為其中最大成員

即:int 4

所以要擴充套件到12

struct aa{

char a;

char c;

int b;

}aa;

sizeif(aa)=8

如果指定了對齊值

#pragma pack(2)

就壓以這個為標準

struct aa

char a;

int b;

char c;

}aa;

sizeof(aa)=8;

1 _  2 2 1 _

接著在來分析這個題

*p的大小為24

4 1 _ _ _ 4 2 2 2 2 2 2

p+0x200在第七個問題中討論了

p+1的值,即:p加上

*p型別物件的大小

而p+0x200

也類似p+0x200*24

注意24是10

進製而0x200為16

進製 24的16

進製為18

故p+0x200*18=0

x1003600

(unsigned char*)p+0x200為

p+0x200*sizeof

(char

)的值為

0x1000200

(unsigned long*)p+0x200為

p+0x200*sizeof

(long

)的值為

0x1000800。

4和1的16

進製還是本身。

多益網路筆試題

一 有20張上下表面光滑的撲克牌,其中有8張向上,要求你閉著眼睛且不借助任何工具把這20張撲克牌分成兩堆,使得每堆向上的撲克牌的數目一樣多 答案 首先,把撲克牌隨機分成兩堆,一堆12張,一堆8張,假設12張的裡面有x張朝上的,那麼8張的裡面就有8 x張朝上的,x張朝下的,此時,把8張撲克牌全部反面,...

多益網路筆試題

include include includeusing namespace std 多益網路筆試程式設計題 夢幻數 輸入乙個數字n 將其按各個位上的數反覆展開 用平方和代替這個n 直到最後結果為1時 則為夢幻數 例如輸入 19 展開 1 2 9 2 82 8 2 2 2 68 6 2 8 2 10...

多益網路2020筆試題

題型 選擇題,填空題,問答題,一道程式設計題。sql 優先輸出字段,其餘的照常輸出 忘記了字段是num,主要是乙個範圍,還是varchar。暫時 按varchar處理 select from table order by case when 字段 條件 then 1 else 0 end selec...