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...