第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

幫分析一下 這段C代碼

幫分析一下 這段C代碼

牛魔王的故事 2019-04-16 17:05:22
看到下面代碼c#define_MARK(p,mark)*((unsigned*)(p+strlen(p)+1))=(mark)#defineIS_MARK(p)(*(unsigned*)(p+strlen(p)+1)==0x6A8FCE84)p是一個(gè)字符串指針,_MARK就是將字符串后臺\0替換掉。IS_MARK是判斷是否存在標(biāo)記的這個(gè)值。對于前面的unsigned*以及最前的*有些疑惑?為什么要強(qiáng)制轉(zhuǎn)換為unsigned*?
查看完整描述

2 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果p是字符串指針,那么#define_MARK(p,mark)*((char*)(p+strlen(p)+1))=(mark)這樣子賦值只會對p+strlen(p)+1指向地址的一個(gè)8位的字符類型數(shù)據(jù)有效,也就是\0后面的8位。而#define_MARK(p,mark)*((unsigned*)(p+strlen(p)+1))=(mark)會將\0后面的32位當(dāng)作一個(gè)無符號整形,那么賦值會對這32位有效。
#defineIS_MARK(p)(*(unsigned*)(p+strlen(p)+1)==0x6A8FCE84)同理。
所以根本不是吧\0替換掉啊。。。
不過你確定這樣子做在某些時(shí)候不會發(fā)生奇怪的事情。。。?
                            
查看完整回答
反對 回復(fù) 2019-04-16
?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

為了符合語境(context),這樣的話,
一來編譯器不會報(bào)警告
二來讀程序的人也會更加明白
說到底你要是不寫unsigned*那也是可以的
                            
查看完整回答
反對 回復(fù) 2019-04-16
  • 2 回答
  • 0 關(guān)注
  • 358 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號