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

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

UnsafePointer <UInt8>函數(shù)參數(shù)行為的字符串值

UnsafePointer <UInt8>函數(shù)參數(shù)行為的字符串值

ibeautiful 2019-10-21 15:48:55
我發(fā)現(xiàn)以下代碼可以編譯并運(yùn)行:func foo(p:UnsafePointer<UInt8>) {    var p = p    for p; p.memory != 0; p++ {        print(String(format:"%2X", p.memory))    }}let str:String = "今日"foo(str)這將打印出來E4BB8AE697A5,并且是UTF8的有效表示形式今日據(jù)我所知,這是未記錄的行為。從文檔中:當(dāng)一個(gè)函數(shù)被聲明為帶有UnsafePointer參數(shù)時(shí),它可以接受以下任何一個(gè):nil,作為空指針傳遞UnsafePointer,UnsafeMutablePointer或AutoreleasingUnsafeMutablePointer值,必要時(shí)將其轉(zhuǎn)換為UnsafePointer一個(gè)In-out表達(dá)式,其操作數(shù)是Type類型的左值,作為左值的地址傳遞一個(gè)[Type]值,作為指向數(shù)組開頭的指針傳遞,并在調(diào)用期間進(jìn)行生命周期擴(kuò)展在這種情況下,str不是他們。我想念什么嗎?添加:如果參數(shù)類型是 UnsafePointer<UInt16>func foo(p:UnsafePointer<UInt16>) {    var p = p    for p; p.memory != 0; p++ {        print(String(format:"%4X", p.memory))    }}let str:String = "今日"foo(str)//  ^ 'String' is not convertible to 'UnsafePointer<UInt16>'即使內(nèi)部String表示形式為UTF16let str = "今日"var p = UnsafePointer<UInt16>(str._core._baseAddress)for p; p.memory != 0; p++ {    print(String(format:"%4X", p.memory)) // prints 4ECA65E5 which is UTF16 今日}
查看完整描述

3 回答

?
呼啦一陣風(fēng)

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

SIL中的“ I”代表中級,對嗎?取決于在已編譯的運(yùn)行時(shí)中實(shí)際實(shí)現(xiàn)字符串的方式(如果只是char*在幕后該怎么辦?),這可能是一個(gè)空操作。

查看完整回答
反對 回復(fù) 2019-10-21
?
MMTTMM

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

很好 根據(jù)swiftc -emit-sil輸出,它實(shí)際上是Array<UInt>從臨時(shí)創(chuàng)建的String.UTF8View.Generator??雌饋?em>還沒那么快…… 

查看完整回答
反對 回復(fù) 2019-10-21
  • 3 回答
  • 0 關(guān)注
  • 1138 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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