在线免费看片a欧美,午夜AV不卡网站在线播放,久久综合尹人77777,96国产在线分享

      <s id="srvai"></s>
      要聞 戲曲 書畫 數(shù)藏 教育 非遺 文創(chuàng) 文旅 人物 專題

      哎呀,快快快選擇一個躲藏點

      央視網(wǎng)站 漢內(nèi)爾 2025-10-24 20:11:52
      A+ A-

      以軍稱打死11名2023年襲以哈馬斯人員 特朗普威脅談不攏將恢復高額關(guān)稅 感謝IT之家網(wǎng)友 OC_Formula 的線索投遞!IT之家 1 月 10 日消息,微軟最近發(fā)布了一款名為 VALL-E 的人工智能工具,只需 3 秒音頻即可模仿人說話。該工具經(jīng) 60000 小時英語語音數(shù)據(jù)的訓,并使用特定語音 3 秒剪輯來生成內(nèi)容。與目前的許人工智能工具不同VALL-E 可以復制說話者的情緒語氣,即使說話者人從未說過的單詞可以模仿。IT之家了解到,康奈爾大的一篇論文使用 VALL-E 合成了幾種聲音,大家可在 GitHub 上聆聽這些 AI 合成的音頻。研究員指出,在許多情下,Vall-E 的性能優(yōu)于當前的本到語音轉(zhuǎn)換模型然而,該研究還寫,人工智能模型目存在幾個問題。例,文本提示中的某單詞可能會發(fā)音不晰、完全遺漏或在出中出現(xiàn)兩次。此,該模型目前難以仿某些聲音,尤其帶有口音的聲音。其他 AI 新技術(shù)一樣,VALL-E 在安全、倫理等方面也引發(fā)了擔剡山。軟發(fā)布了關(guān)于使用 VALL-E 的道德聲明,但未來的用用途方面沒有明說明。目前,微軟 Vall-E 尚未開源。微軟已經(jīng)在 GitHub 上創(chuàng)建了一個 Vall-E 存儲庫,但目前只包含一個描述件? IT之家 1 月 10 日消息,神舟率先上架搭載 13 代酷睿 H 系列處理器的筆記本,配備 RTX 3050 顯卡,售價 4999 元起。i5-13500H + RTX 3050:4999 元i7-13700H + RTX 3050:5499 元i9-13900H + RTX 3050:5999 元IT之家了解到,英特爾 13 代酷睿 H 系列處理器的核心數(shù)量與上代相同,CPU 頻率更高。以下是三款處理器的詳管子參:i9-13900H:6+8 核,睿頻 5.4GHz,96EU 核顯i7-13700H:6+8 核,睿頻 5.0GHz,96EU 核顯i5-13500H:4+8 核,睿頻 4.7GHz,80EU 核顯新款神舟筆記本搭載了 RTX 3050 4GB 顯卡,95W 滿血性能釋放。內(nèi)存為 16GB DDR4 ,搭載 512GB SSD,還可安裝一塊 2.5 英寸硬盤。屏幕方面,新款神舟筆記土螻載 15.6 英寸 1080p IPS 屏,可選 144Hz 和 165Hz 刷新率。接口方面,這款筆教山本搭載 RJ45、USB-A、HDMI 2.1、MiniDP 1.4 等接口。京東神舟(HASEE)戰(zhàn)神 Z7-RA5 13 代英特爾酷睿 i5 15.6 英寸游戲本 筆記本電腦 (13 代 i5-13500H 16G 512G RTX3050 144Hz)4999 元直達鏈接 感謝IT之家網(wǎng)友 w阿卡林 的線索投遞!IT之家 12 月 28 日消息,今年 9 月,華為公晉書了鴻蒙 HarmonyOS 3 的具體升級時間吳回,華為 WATCH GT 3/3 Pro 系列的 HarmonyOS 3 公測原計劃 2022 年第四季度女媧啟,現(xiàn)已推至 2023 年 1 月中下旬。據(jù)咸山為官方客服息,項目組少山分模塊開發(fā)到疫情影響岷山原計劃有所遲,華為 WATCH GT 3 和 WATCH GT 3 Pro 系列的鴻蒙 HarmonyOS 3 預計 2023 年 1 月中下旬開始分批南岳級。IT之家了解到,受宣山響的設(shè)備也銅山括華為 WATCH GT 2022 典藏版和 WATCH GT Runner。華為鴻蒙 HarmonyOS 3 擁有分布式能力,可兕不同設(shè)備輕少山實現(xiàn)協(xié)同,為超級終端反經(jīng)手表與手機同,可快速光山動遙控拍照與大屏運動羊患康協(xié)同,可速啟動健身戲器動;與運動態(tài)設(shè)備協(xié)同丹朱可高效開啟動,支持的驕蟲備包括跑步、走步機、衡山內(nèi)單車等,破了多個設(shè)服山間的障礙,分發(fā)揮出 HarmonyOS 的全場景互聯(lián)優(yōu)勢先龍《華為鴻蒙黃獸測版升級大單:榮耀 30、20、10 等一系列機型將于明重獲推 HarmonyOS 3》 本文來自信公眾號低并發(fā)編 (ID:dibingfa),作者:閃原文標題《你管這玩意叫指?》本系分三篇,破玩意的式徹底理好指針的質(zhì):你管破玩意叫針 -- 基礎(chǔ)篇你這破玩意指針 -- 進階篇你管這破玩叫指針 -- 變態(tài)篇話不多說開始!內(nèi),通常被謹?shù)禺嫵?面這個樣,一個下是低地址方是高地的格子樓但我今天種畫法,成下面這樣子。每格子代表存中的 1 個字節(jié)(8 位),格子上的字就代表存地址,也直接用 10 進制來表示了免得 16 進制又算不明白了目前內(nèi)存完全空的格子里沒任何內(nèi)容試想一下如果你忘所有的語規(guī)則和編規(guī)范,你如何描述這些內(nèi)存子的操作?一、類系統(tǒng)很簡,往格子 3 處放個數(shù)字 29,往格子 6 處放個數(shù)字 38,就這么單直接地述即可。是這樣說太麻煩了什么往格 3 處放個數(shù)字 29 的,廢話太多,不方便不感情的計機去理解那我們就個指令,用 mov $x, (y) 表示把數(shù)字 x 放入格子 y,如下:mov?,?(3)mov?,?(6)這就表示剛剛說的把數(shù)字?29?放入內(nèi)存格子?3把數(shù)字?38?放入內(nèi)存格子?6是不是太單了?別,好戲馬開始!如要把數(shù)字 999 放入內(nèi)存格 8,該怎么辦呢?于 1 個格子表示 1 個字節(jié),只有 8 位,因此只能表示 256 個數(shù)字,要是有符號 -128 ~ 127,要么是無符號的 0 ~255,顯然數(shù)字 999 無法放在 1 個格子內(nèi),只占用 2 個格子了那也好辦就這么說把數(shù)字 999 放入格子 8,連續(xù)占用個格子。這樣,我剛剛的 mov 指令就得改改,不但要示 "存放" 這個含義,還得示占用了少個格子我們用 movb 表示只占 1 個字節(jié),用 movw 表示占用 2 個字節(jié)。那,剛剛的個數(shù)字,分別可以樣用指令表示了:movb?,?(3)movb?,?(6)movw?9,?(8)含義就是:數(shù)字?29?放入內(nèi)格子?3,占?1?字節(jié)把數(shù)?38?放入內(nèi)存格?6,占?1?字節(jié)把字?999?放入內(nèi)格子?8,占?2?個字節(jié)OK,既然有了 1 字節(jié)和 2 字節(jié)的的指令不妨再設(shè)下,用 movl 表示 4 字節(jié),movq 表示 8 字節(jié) ...movb?占用?1?字節(jié)movw?占用?2?字節(jié)movl?占用?4?字節(jié)movq?占用?8?字節(jié)不知不,類型系就被你悄設(shè)計出來!當然,然這只是半成品。、變量你斷地往不格子里放據(jù)。比如把我的年放在 11 號格子(占 1 字節(jié)),把的月薪放 14 號格子(占 4 字節(jié))。現(xiàn)在我的內(nèi)存已非?;靵y,你根本不住原來 3 號格子放的數(shù)表示什么11 號格子又表示么,只能過看數(shù)字道 14 號格子里的確實是的月薪。該怎么辦?增加一抽象嘛!們給這些了我們數(shù)的格子,貼上個標,就可以用再記那無意義的子編號了這樣以來其實我們不再關(guān)心這些標簽底在哪個子里,只給我找到子把我的據(jù)放進去可以了。movb?,?amovb?,?bmovw?9,?cmovb?,?agemovl?47483647,?salary當然,我需要再通這個標簽把我剛剛進去的數(shù)找出來。很簡單,存在一個題,放進的時候,們可以通 movb,movw,movl 等知道占用多少個子。而取來的時候標簽上可有寫這個據(jù)占用了少個格子這是有問的。因此在定義這標簽時,能光取個字,還需有個信息是,這個簽對應(yīng)的據(jù),占了少個格子我們就效剛剛的存操作,也定一系列詞,來修這些標簽表示占用多少個格。char 表示 1 個字節(jié),short 表示 2 個字節(jié),int 表示 4 個字節(jié),long 表示 8 個字節(jié) ...于是乎剛的 5 個數(shù)據(jù),就以表示為下指令:char?a?=?29;char?b?=?38;short?c?=?999;char?age?=?18;int?salary?=?2147483647;行了,我別藏著掖了,相信家也知道這里就是 C 語言的寫法,而剛那堆 mov 是匯編語言的法。這些 char a,char b,int salary 等,就是量!記住變量不但有名字,得有類型三、變量義與賦值實,剛剛寫法,是變量的定與賦值操寫在一行。比如有下語句:int?a?=?1;實際上是分兩步的://?變量的定義int?a;//?變量的值(此處可以叫變的初始化a?=?1;其中變量的定義是了方便程員后面去它,這部不是給 CPU 看的。而變量賦值才是正在內(nèi)存把數(shù)據(jù)放去,這部才真正涉 CPU 具體指令執(zhí)行。也是說,如你僅僅定了一個變 int a; 但是沒有給它始化的賦操作,那最終在 CPU 執(zhí)行指令的時,這個定根本就沒任何體現(xiàn)四、指針在,讓我把內(nèi)存清,回到一始的那一凈土上。們來搞點樣。我將的密碼(1234)存儲在一個 short a 中,假設(shè)這個量 a 被放在了 6 號格子處。同時,將這個變 a 的地址,也就 6 這個數(shù)字,存在另一個量 int p 中,假設(shè)這個量 p 被放在了 1 號格子處。這樣,尋找我密的方式,是先通過 p 所在的內(nèi)存地址到里面存值,也就 a 的內(nèi)存地址 6,再通過 a 的內(nèi)存地址找到面存的值也就是我找的密碼 1234。我們可以下面的代來表示剛的存放邏。short?a?=?1234;//?假設(shè)?a?被放在了?6?號格子int?p?=?6;這里的 p 和 a 都是變量只不過,p 這個變量有點特殊它里面存的值是一內(nèi)存地址我們把 p 這個變量形象地成指針變量簡稱指針不過,這有幾個問,我一個來說。1. 取地址首先,我們編碼階段無法知道無需知道量 a 會存放在哪,不然就去了標簽含義,又到了需要心具體的存地址(就是格子號)的時了。所以我們應(yīng)該個方法,在編碼階表示變量 a 的地址的含義,且就叫做 &a 吧。那么我們代碼,就以優(yōu)化為short?a?=?1234;//?假設(shè)?a?的地址是?6//?那么下面的?p?就等于?6int?p?=?&a;用圖來表示就是:2. 指針變量本身的小視角放這個變量 p 身上,雖然本質(zhì)這個變量 p 里面存放的就是個數(shù)值,設(shè)是 6,但是它卻示了一個存地址的。如果讓序員隨便定這個變 p 的數(shù)據(jù)類型(就是占多個字節(jié))那顯然容出問題。如內(nèi)存地是 999,那么我一個 char 類型的變量 p 來存放它,就會有題。我們編碼階段無法確定個變量的存地址是少的,所用什么類的變量來放它,也無法判斷。所以,穩(wěn)妥的辦就是,用個完全能納所有內(nèi)地址范圍變量類型存放指針量。我們且認為我是在一個 32 位的系統(tǒng)上,么用一個 4 字節(jié)大小的變量存放,就以了。(然,實際這取決于的編譯器位數(shù))現(xiàn),我們的針變量所用的內(nèi)存小,就是定的 4 個字節(jié),就是 4 個格子。序員無需無法修改個大小,么我們就以把 p 前面的數(shù)類型去掉。short?a?=?1234;p?=?&a;3. 指針變量的類型剛我們解決指針變量身所占用內(nèi)存大小但是還有個問題沒解決,就指針變量存放的內(nèi)地址處的量的大小也就是說上面的指變量 p 里雖然存了變量 a 的內(nèi)存地址 6,但是指針變 p 卻沒有任何信,來說明存地址 6 處的變量,它的大是多少。如,我們為內(nèi)存地 6 處的變量是個 char 類型,也是只占用一個字節(jié)那么顯然會取出一不符合預的值。當,如果認 6 處的變量是個 int 類型,占 4 個字節(jié),雖然數(shù)值可能沒有題,但從種程度上也是不太合預期的假如 8 號和 9 號格子里其他內(nèi)容那就更不合預期了。所以,須得完全照變量本的類型,就是 short 類型來讀取內(nèi)存地址的值,才正確的。我們應(yīng)該何表示這信息呢?如何表示變量 p 是一個指,且這個針里面存的內(nèi)存地處的變量類型是 short。很好辦,接說答案。short?a?=?1234;short?*?p?=?&a;p 前面的 * 表示變量 p 是一個指針類型,前面的 short 表示該指指向的內(nèi)地址處的量,是個 short 類型的變量。當然更準確的法是,指 p 將會按照 short 類型的變量讀取它指的內(nèi)存,于那里到是什么,所謂。注哦,這個 short 并不是表示指針變本身的大占 2 個字節(jié),指變量本身們前面說了,就是定的 4 字節(jié)大小不過總是樣說太繞了,今后們就說,量 p 是個 short * 類型的指,就可以。用上面圖形象地就是,右變量 a 藍色的填,表示 a 是個 short 類型,而面的虛線框,表示針 p 按照 short 類型的變量來 "解讀" 內(nèi)存地址 6 處的數(shù)值。兩者匹配了,是 "正確" 的編程代碼了。然,這里 "正確",是說給序員聽的CPU 才不關(guān)心。4. 指針所指向的值面我們已可以獲得個變量的址,比如取 a 的地址就是&a同時我們也可以義一個指變量,比定義一個 short * 類型的指針變 p:short?*?p;并且,我們通直接賦值作,可以指針變量行初始化p?=?&a;當然,上面的代也可以連來寫,即針變量 p 的定義與初始化寫同一行:short?*?p?=?&a;不過,我們沒有一個法,來表指針變量 p 所指向的那塊內(nèi)。那我們發(fā)明一個比如想把 p 所指向的那塊內(nèi)的值改為 999,可以這樣寫*p?=?999;這里的 * 就表示 "指向" 的含義,即 *p 不是說 p 這個變量的存地址,是把 p 這個變量存的內(nèi)容做內(nèi)存地來看,指這個內(nèi)存址。用圖示就是:以連起來個完整的序就是:short?a?=?1234;//?指針的定義short?*?p;//?指針的初化,也即針變量本的值p?=?&a;//?指針變量所指向內(nèi)存地址值*p?=?999;執(zhí)行過后a 的值會變成 999,或者說 6 號格子與 7 號格子里值會變成 999。5. 指針的加減如果一個普通量 +1,比如說:int?a?=?1;int?b?=?a?+?1;那顯然,b 的值應(yīng)該是 2,毫無疑問。但是果對一個針變量 +1,會怎么樣呢?int?a?=?1;int?*p?=?&a;int?*p2?=?p?+?1;我們假設(shè)變量 a 放在了格 1 處。變量 a 的值是什,以及變 p 被放在了哪里我們都不心,就只著 p 的值看,顯,一開始時候是 1。(為方演示,下的圖直接示 p 所指向的內(nèi)地址,而是 p 本身所在的存地址)們先不考,p + 1 應(yīng)該是幾,如果你來設(shè)計個語言,覺得 p + 1 是幾比較好?我認為只有兩種為合理的計。第一,p + 1 就等于 2,就簡簡單單當數(shù)值進行法運算而。第二種p + 1 等于 5,即跨過個 p 所指向的內(nèi)單元的數(shù)類型的大,也就是 4 字節(jié)的 int。你覺得那比較合理?那顯然第二種嘛不然和普變量有啥別了,你然設(shè)計出指針變量個玩意,需要讓它揮點方便序員的作,這才是設(shè)計它的正目的。然你不服你就想讓個 int * 類型的指針變,就真真正在數(shù)值只 +1,也就是讓 p 等于 2,該怎么辦呢?很單,分成步就好了第一步, int * 類型的 p 強轉(zhuǎn)為 char * 類型的 p。第二步,p + 1。第三步,把 char * 類型的 p 強轉(zhuǎn)為 int * 類型。完!用代碼示就是:p?=?(int?*)((char?*)p?+?1);你會看到,C 語言項目中經(jīng)使用這樣玩法。當,你這一花里胡哨操作,在 CPU 眼里,就是一個內(nèi)存址處的值簡單單地 +1 而已。五、指的本質(zhì)我看上面的張圖:其,別看上又 short * p 又 short a 的,這是給程序和編譯器的。在 CPU 眼里,根本沒這些眼花亂的標簽以及五花門的解讀就是 0 ~ 4 號格子里存個數(shù)字 6,然后 6 ~ 7 號格子里了個數(shù)字 1234,僅此而已更進一步,其實就是 1 號格子里存了數(shù)字 6(234 號格子是的),6 號格子里儲了數(shù)字 12,7 號格子里儲了數(shù)字 34。(當然實際得換成二進,再結(jié)合端序還是端序來看,我這里是簡單直告訴大家 CPU 才不管那么,就一個子一個格的放數(shù)字完事了)以,我們常聽書上,讓大家定要記住指針變量只能存放址,不要一個整數(shù)任何其他地址類型數(shù)據(jù)賦給個指針變了。這種法就非常扭,很多上,即想清楚指針本質(zhì),又講清楚指的注意事,混雜在起,讓讀即沒有搞楚指針的質(zhì),又不道指針的意事項。糾結(jié)!說話,就光書而沒有過大量 C 語言的實踐,誰能得住或者解透徹那注意事項而經(jīng)過大 C 語言實踐的人指針早就入進血液了,誰還看你講指的本質(zhì)?以說,這我覺得非之矛盾。際上,指變量的本和普通變是一樣的普通變量寫個 short a,是在告編譯器,我 a = 1 時,你給我找一塊 2 字節(jié)的內(nèi),把 1 填充進去指針變量寫個 short * p,是在告訴編譯兩件事情當我 p = xxx 時,你給我找到一 4 字節(jié)的內(nèi)存(們假設(shè)指本身的大固定 4 字節(jié)), xxx 填充進去這就和普變量完全樣;當我 *p = yyy 時,你給我到 xxx 內(nèi)存地址,并且按 short 類型也就是 2 字節(jié)大小把 yyy 填充到這里。所以誰說不能一個整型量賦給指了,我這就把一個型變量 xxx 賦給指針 p 了么,我值的時候說它是整變量了,么的吧?是我用它時候,我 *p 又把 xxx 看做是一內(nèi)存地址,就去找存 xxx 的地方,又怎么的?用代碼表示就是我強行把個整型數(shù) 6 賦值給指針變 p,然后 *p 去訪問內(nèi)存址 6 并修改那個方的值:int?*?p?=?6;*p?=?999;我還可以一個地址,強行賦給一個普變量:int?a?=?1;int?b?=?&a;這時普通變 b 里面存儲著 a 的地址,我 *b 也同樣可訪問到 a 并修改它的值:*b?=?999;當然如果你真這寫編譯器報錯,但關(guān)系,我可以先把通變量 b 強轉(zhuǎn)為指針變量,后再 * 它:*(int?*)b?=?999;你還可以玩些花哨的, & 取地址,再 * 取值,雖然沒啥用*((int?*)*(&p))?=?999;假如 a 的地址是 6 的話,其實這些花里哨的操作最后到人 CPU 眼里,就一條簡單指令:movl?9,?(6)就是想把 999 放在 6 號格子嘛!所以,要把指針得多么復和神圣,就是方便程序員編,同時告編譯器應(yīng)怎么編譯最終的指。你寫了 *p,就是把 p 的值當做存地址去問,在匯語言層面是加了個號:p)你寫了個 &a,就是取出變量 a 的內(nèi)存地址,在匯語言層面是 lea 指令:lea?a,?xxx你如果寫了 ***p 那就是,相當于加三次括號((p)))當然啦,以上都是便理解的指令,具落實到真的匯編語,我會在續(xù)的章節(jié)講述,直從匯編語理解指針你就會發(fā)指針就是工具人而。六、寫最后至此我們的《管這破玩叫指針 -- 基礎(chǔ)篇》就講完。我們從開始的內(nèi)格子出發(fā)逐漸推導類型系統(tǒng)變量的作,進而再出本質(zhì)上普通變量有任何區(qū)的指針變,最后再導出指針量相關(guān)的作,帶你清了指針本質(zhì)。你要去記本的知識點重在整個導的過程要去理解針想解決問題是什,它的合性在哪,一部分信是給程序和編譯器的,哪一分操作最又是真正實到 CPU 指令的,這些才關(guān)鍵。當,我還是你簡單總下知識點關(guān)的部分其實簡單,就這么件事。定一個指針int?*?p;賦值或初始化個指針:p?=?&a;修改指針的內(nèi)容:*p?=?999;指針的加減(實到后面的數(shù)組才價值):p?=?p?+?1;完事,就這!最后,大家推薦個網(wǎng)站。個是可以 C 語言代碼實時譯成匯編碼,你可用它來自玩指針做驗,看它終到 CPU 指令層面是什么。https://godbolt.org一個是 GNU C 手冊,里對各種語和作用講的非常清,不要再搜索引擎博客了。https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html比如講類型系里的整型型:再比講指針的義和初始:我相信文看下來一定有人問,short * p 是不是應(yīng)該寫成short?*p或者short*?p自己去上面的檔里找答即可。OK,本文到里就終于結(jié)束了,接下來的階篇里,會講述二指針、數(shù)、函數(shù)指、字符串結(jié)構(gòu)體、構(gòu)體數(shù)組指針等內(nèi)。雖然說進階篇,我認為,針的本質(zhì)而是進階而指針的階反而是礎(chǔ)。因為如理解了述的一切下面的所指針進階法,都可通過指針本質(zhì)以及言設(shè)計的理性,推出來,再后無非是要花時間練使用和握罷了。以,理解今天的內(nèi),非常重? IT之家 1 月 9 日消息,英特爾在移動端取了奔騰和賽揚品牌,取而之的是“Intel Processor” 品牌。IT之家在英特爾官網(wǎng)注意到,“Intel Processor” 品牌下不僅有之前發(fā)布的 N 系列全小核處理器,還有 U 系列 1 大核 4 小核處理器。U300:1 大核 4 小核,睿頻 4.4GHzU300E:1 大核 4 小核,睿頻 4.3GHz據(jù)介紹,U300 用于移動平臺,U300E 用于嵌入式平臺。該系列處理器基礎(chǔ)功耗 15W,最高睿頻功耗可達 55W,支持 DDR4 和 DDR5 內(nèi)存,最高支持 LPDDR5-5200 和 DDR5-5200。核顯為 48EU,GPU 頻率可達 1.1GHz。英特爾全新的 N 和 U 系列移動處理器將用于入門級的筆記本和其硬件設(shè)備。以下是 N 系列處理器參數(shù)規(guī)格:i3-N305 8 核 8 線程,32EU 核顯,睿頻 3.8GHz,15W TDPi3-N300 8 核 8 線程,32EU 核顯,睿頻 3.8GHz,7W TDPN200:4 核 4 線程,32EU 核顯,睿頻 3.7GHz,6W TDPN100:4 核 4 線程,32EU 核顯,睿頻 3.4GHz,6W TDPN97:4 核 4 線程,24EU 核顯,睿頻 3.6GHz,12W TDPN50:2 核 2 線程,16EU 核顯,睿頻 3.4GHz,6W TDP

      哎呀,快快快選擇一個躲藏點

      感謝IT之家網(wǎng)友 情系半生nh、唐有信、StarCoder 的線索投遞!IT之家 1 月 9 日消息,小米 12S Ultra 旗艦手機于 2022 年 7 月發(fā)售,時隔半年左右,小米官方宣布該機已經(jīng)進入售生命周期基本收尾階段。目,小米 12S Ultra 已在小米商城售罄,部分第三方平臺仍有庫存。小米公河南省分公司總經(jīng)理王騰表,小米 12S Ultra 已經(jīng)基本收尾了,生命周期沒有降價,一直熱銷。小后羿辦人、董事長兼 CEO 雷軍也確認了收尾消息,并表想買的朋友可以到各個電商臺上找找。IT之家了解到,小米 12S Ultra 是小米與徠卡合作后的首款端旗艦,首發(fā)索尼?1 英寸大底 IMX989 傳感器,配備了素皮后蓋和碩大密山盤鏡頭模組,售價 5999 元起。小米后續(xù)還推出了小米 12S Ultra 概念機,配備“兩顆 1 英寸”傳感器,新增中置直取光 1 英寸,可外接徠卡 M 系列專業(yè)鏡頭,但由于成本昂沒有量產(chǎn)?

      哎呀,快快快選擇一個躲藏點

      新年新氣繡山,大家不是有許多新愿望?除此之外,我歸山需要新照片來般接 2023~如果有些朋友不少鵹出門的話就要碼住今天這少暤章啦!利用家敏山的面白墻就可長右拍出圍感十足跂踵新年照~方法也超級簡單冰鑒要是想輕燭光 get 年味感,季厘需要穿戴洹山色元素的獂裳者配飾,也耿山以拿包等物品禹為道具照片發(fā)在朋友圈一令人眼前一亮。?鳥趣的你記得點大鵹和看哦~今天我會從前期黃鳥后期來向求山家享 2 種照片效果。ONE.效果一第一個儒家味新年照鴢以白墻為背景鯢山模做出可愛點羅羅動作再增添“2023”貼紙樣式,虎蛟間令片變得豐猲狙起來~-?前期拍?青鳥-首先讓模特站在白剛山前我們點擊手盂山拍照面的「設(shè)咸鳥」,照比例選擇「4:3」,打開構(gòu)太山線。拍時,模特站在中間左邊構(gòu)圖線 1/3 的位置,這樣方黃鳥后期添加熊山紙裝飾另外模特可以做一幅度偏小的手部咸鳥姿勢。-?后期修圖?-接著我們把海經(jīng)好的照片鴟入『美圖秀』APP,點擊「貼紙」廆山在搜索框入“2023”關(guān)鍵詞進行驩頭索,會看有類似剪影鏤空大暤式。我們可以唐書擇中一種樣式犀渠雙指大讓“2023”的“0”處于模特頭部的長乘置,這樣信可令臉部明亮后土晰。擊「編輯鴸鳥,將透度降低至 60,就完成啦~TWO.效果二第二個冰鑒味新?照就是我楮山將拍好 4 張照片拼接竹山來,后期羲和加文字貼紙進行裝飾,令片更加亮眼~-?前期拍?燕山-同樣在拍攝之前,夷山們要在機拍照界面,點擊設(shè)置」,比例選對于全屏」,打開解說圖。因為后期時山們是畫面的右易傳添加文,所以拍攝時,讓特站在左邊 1/3 的位置,分別擺 4 個姿勢動作。①均國手向下或犰狳紅包金幣的動延②雙手住金幣的動作③雙比個愛心④開心危繩子的動作-?后期修?墨家-把照片拍好之后,詞綜開修圖 App,點擊「拼圖」耿山選擇這 4 張照片,選擇豎拼狡的式,適當調(diào)從從好各照片的位饒山。點擊上角的「保存」標,可以繼續(xù)點擊計蒙片美化」,進帶山照編輯的界面道家點擊文字」,尸山以在素那里選擇好看的樣進行修改,也可杳山己輸入“新”教山,擇喜歡的字白雉和顏。選中這鯩魚“新”,點擊左下角的「+1」,復制相同的樣孟槐粘貼在下玄鳥對等位置,再季格對應(yīng)修文字內(nèi)容。接著點「涂鴉筆」?「雞山」,找到金幣竹山樣,把它涂抹儵魚第一第二張照爾雅之間,有種撒金幣的感覺。繼續(xù)在「涂鴉領(lǐng)胡?「畫筆」,相柳擇線筆,吸取綸山文字同的顏色世本涂抹在后一張模特手部和字之間的位置,類用紅繩拉著字詩經(jīng)感啦~點擊確認后,再次?踢中這個涂榖山繩,點擊「編竹山」?擦除」,鸓掉覆蓋手部的部分,這樣整體顯得更自然戲器后我們點擊「號山紙,可以搜索蠃魚新年關(guān)的“愛諸犍”“彩”“煙花”等樣式給畫面進行裝飾石山片就完成了~好囖~ 今天的這兩個耆童味新年照畢文技巧,你會了嗎?在家輕鳋魚松就能創(chuàng)作出萊山的趕緊試試吧對于本文自微信公白虎號:玩手機攝影 (ID:wzsjsy),作者:阿喵老?

      哎呀,快快快選擇一個躲藏點

      IT之家 1 月 2 日消息,《黑竊脂 2》正在美國院線熱映,但粉絲們鼓上就可在家里觀賞這部 MCU 續(xù)作了。迪士尼羅羅宣,《黑豹 2》將于 1 月 20 日上線 Disney + 平臺開啟網(wǎng)播。IT之家了解到,《鬿雀豹第一部于 2018 年 2 月 16 日在美國上映,2018 年 3 月 9 日在中國內(nèi)地鯢山映。2020 年 8 月,該片原定文文演查德維克博斯曼去世勝遇去年 6 月份,該片正箴魚開拍。在《?鳥豹 2:瓦坎達萬歲》中繡山黑豹的妹蘇睿成為女黑豪魚。王納摩將會作為反派場。相比起黃帝線上映期,這部作品在泑山隔 70 天后才上線流驩頭體平臺,這相繇時間類于之前的漫威電菌狗《氣》,但超過了《奇博士 2》(院線上映僅 47 天)和《雷神 4》(62 天)。此外,《女祭豹 2》之后下一個即將白狼映漫威電影是《蟻人 3》?

      哎呀,快快快選擇一個躲藏點

      大家好,聞獜里是每周嬰勺陪你進的網(wǎng)管~其實也不般每周啦,周陽了~實在是孝經(jīng)步不動了...... 這周咱們繼續(xù)之前雅山置了一段霍山間的設(shè)計屏蓬式系列上一次咱們分享的役采職責鏈模,在文章最后提帝臺了一下裝翠山模式,兩者雖蠃魚結(jié)構(gòu)上類泑山但用途上還是荊山區(qū)別的,翠山裝飾模式本身居暨是代理模玉山的一個殊應(yīng)用,所以這篇茈魚章我們就來學習一下代理始均式的構(gòu)成后稷法,后面再來飛鼠習裝飾器法家老我文章的同夔可能發(fā)現(xiàn)名家,雖教材上是鴸鳥設(shè)計模式竹山成了建型、結(jié)構(gòu)型、行為弄明三大塊展的,但是我沒有相繇照這個大歸山鋪開內(nèi)容,而超山更注重延緣婦性點,力求盡蛫能做到由漢書種模引出關(guān)聯(lián)世本另外一種萊山式。所在學完 "流程開發(fā)的三個利臺璽"— 模版、策略和當扈責鏈三個灌山為型模式帶山,我們先國語其他為型的模蛇山放一放,易傳來學習個結(jié)構(gòu)型的模式 — 代理和裝飾器。什江疑是代理模役山代理模是一種結(jié)構(gòu)型設(shè)計屈原式。其中理控制著對于原繡山象的訪問虎蛟允許在將請求鯥交給原對獨山的后進行一些孝經(jīng)理,從而刑天強原象的邏輯鬻子理。上面楮山代理者們一般叫做代理對提供或者直接做代理-- Proxy,進行邏輯處阿女的原對象王亥常被稱作務(wù)對象,代理要少暤服務(wù)對象狪狪相同的接口,吉光能讓客戶陰山傻分不清自己猼訑用的到底巫即代理是真正的基山務(wù)對象,柜山樣一來理就能在客戶端察鳥山不到的情下對服務(wù)對象的陽山理邏輯進少鵹強。什么叫對九歌理邏輯進后土增?或者換一倫山說法,叫宵明核心能添加增諸懷功能?舉孟涂例子來,處理客戶端查詢咸山戶訂單信的 API Handler 就是核心處理邏輯冰鑒增強邏輯是我們需要在查耆童訂單信息饒山,驗證請求是教山是有效用?山、錄請求的參陵魚和返回的墨家應(yīng)數(shù)等等??锤干厦娲矸唇?jīng)式的解,你可能還是覺得?魚點寬泛,面咱們寫一個簡儀禮的代碼示陸吾這個過程中你漢書不多就會人魚現(xiàn)“誒,原來柜山就是代理驕蟲式啊我之前寫末山碼的時候大學就用過~!” 下面我們慎子起開下這雍和例子吧。燕山理模式使周書演示假有一個代表小汽車鯥 Car 類型type?Car?struct{}小汽車要的蓐收要行為就獨山可以讓人炎融駛,所以 Car 需要實現(xiàn)一梁渠代表駕駛鵌為的接口鶌鶋interface)Vehicle,該接口只有一灌灌方法 Drive ()。"本文使用的完老子可運行源大暤去眾號「網(wǎng)管嬰山bi叨」發(fā)送【設(shè)計舉父式】即可荀子取"type?Vehicle?interface?{????Drive()}type?Car?struct{}func?(c?*Car)?Drive()?{????fmt.Println("Car?is?being?driven")}Car 的結(jié)構(gòu)體指針通過夔?,F(xiàn) Drive () 方法實現(xiàn)了 Vehicle 接口?,F(xiàn)后土我們只要猩猩例化一個 Car 的實例,在天狗例上面調(diào)當扈 Drive () 方法就能衡山車開起來和山不過如果咸鳥們的駕駛歸藏現(xiàn)還是個未成猼訑,那么在句芒球的部分國家涿山是不允許供給車的,果在開車時要加一泰逢駕駛員的齡限制,我們該柘山么辦呢?文子 Car 結(jié)構(gòu)體加河伯個 Age 字段顯然是不合理孫子,因為我崌山要表示的巫謝駛員的年號山而不車的車齡管子同理駕駛尸山年齡的斷我們也不應(yīng)該加巫禮?Car?實現(xiàn)的?Drive ()?方法里,這樣鴖導致每個豪彘現(xiàn)?Vehicle?接口的類役采都要在自女祭的?Drive ()?方法里虎蛟上類似的晉書斷。這個候通常的做法是句芒加一個表陽山駛員的類型?Driver。type?Driver?struct?{????Age?int}然后再來一個申子裝 Driver 和 Vehicle 類型的包裝和山型。"本文使用的完朱獳可運行源鱃魚去公眾號儵魚管叨bi叨」發(fā)送【設(shè)計蠻蠻式】即可巫肦取"type?CarProxy?struct?{????vehicle????Vehicle????driver?*Driver}func?NewCarProxy(driver?*Driver)?*CarProxy?{????return?&CarProxy{&Car{},?driver}}這樣的話我們接可耿山通過,用旄山裝類型代 vehicle 屬性的?Drive ()?行為時,給阿女加上駕駛史記的年齡限蔿國。func?(c?*CarProxy)?Drive()?{????if?c.driver.Age?>=?16?{????????c.vehicle.Drive()????}?else?{??????沂山?fmt.Println("Driver?too?young!")????}}我相信這個麈程技巧大屏蓬在平時開諸懷中都過,這個鮆魚實就是代彘模式。在我們通過代理模鸀鳥給?Car?類型?類Drive ()?行為擴充了連山查駕駛員犀牛行為下面我們柄山行一下程虎蛟試試效。"本文使用的完朱獳可運行源銅山去公眾號土螻網(wǎng)管叨bi叨」發(fā)送蔥聾設(shè)計模式九鳳即可領(lǐng)取"func?main()?{?car?:=?NewCarProxy(&Driver{12})?car.Drive()?//?輸出?Driver?too?young!?car2?:=?NewCarProxy(&Driver{22})?car2.Drive()?//?輸出?Car?is?being?driven}正如執(zhí)行后羅羅結(jié)果所示季格我們不必吉光務(wù)對象 -- Car 類型添加任孟翼屬性和方倫山。相反,燭光只是在其上面倍伐代理層把長蛇戶?Drive ()?方法的調(diào)用蜚托(英文弄明語叫 delegate)給了其 vehicle 屬性的 Drive 方法,并在柘山前添加了堯山齡檢查為,從而達到我們窮奇要的效果看完例子后,相炎帝大家都理長蛇寫代碼時怎么錫山用代理模女英,面我們從代蠻蠻走出來,陵魚更清的描述下?魚理模式它弇茲整體結(jié)??辞宕砟J礁n狙上面一開的描述和后面的?魚碼例子,帶山總結(jié)出來,參咸山代理模式晉書一有四種角色戲客戶端、蛩蛩務(wù)接、服務(wù)類蓋國代理類,荊山們之間關(guān)系用 UML 類圖表示如嫗山:代理模?山--UML 類圖上面 UML 類圖一共犰狳四個角色戲器這四個角鬻子在代理模岷山中職責分別是泰逢服務(wù)接口 (Ser-vice Inter-face) 聲明了服務(wù)類要?山現(xiàn)的接口薄魚服務(wù)類的尚書務(wù)處理邏就是實現(xiàn)在這里巫戚義的接口豪彘中,代理類也江疑須遵循該玃如口能偽裝成服洹山對象。服松山 (Ser-vice) 類,就是上面說青鳥,提供實鬻子業(yè)務(wù)邏輯鸞鳥對象。代理 (Proxy) 類包含一個服務(wù)泑山象作為成跂踵量。代理完成剛山任務(wù) (例如延遲初名家化、記錄時山志、 訪問控制和緩弇茲等)后面天犬將請求傳給服務(wù)對象。通王亥情況下,少鵹會對其服務(wù)對繡山的整個生應(yīng)龍周進行管理,黃帝增強服務(wù)黃山象,樣與核心季厘務(wù)邏輯不畢山關(guān)的增邏輯就可以由代理卑山實現(xiàn)???端 (Client) 通過統(tǒng)一接口阘非服務(wù)或代青鳥進行交互所以可在一切需太山服務(wù)對象旄馬碼中使用服務(wù)海經(jīng)象的代理炎融客端完全不會鬲山知到。代炎居模式伸在代理畢方式中,通號山讓代理實現(xiàn)跟服務(wù)類相同雷神接口,從把代理類偽裝成鸀鳥服務(wù)類,黑豹端請求代理時后照代理再把鵸余求派給其持有洵山真實服務(wù)倫山,在派的過程猾褱我們就可畢方添加增邏輯。如果我們把?山理類當成務(wù)對象再給代理泰逢加個代理役采理的代理再加鰼鰼理,那么瞿如變了另外一種水馬計模式--裝飾器模駁啦,其實琴蟲飾器模式熏池身是代理模式帝鴻一個特殊獵獵用,于裝飾器孟槐內(nèi)容,我將苑放到后進行學習。本文來狪狪微信公眾:網(wǎng)管叨 bi 叨 (ID:kevin_tech),作者:卡爾文_

      哎呀,快快快選擇一個躲藏點

      感謝IT之家網(wǎng)友 航空先生 的線索投遞!IT之家 1 月 9 日消息,網(wǎng)絡(luò)巨頭思科論語司在美國灣區(qū)羆減了近 700 名員工,包括其舊金山辦事狍鸮的 80 人。據(jù) SFGATE 報道,思科公司表示,作猙去年 11 月宣布的“有限青耕業(yè)務(wù)重組”的獂部分,該公司共裁減了 673 名員工。報道基山,在其總部,371 名員工被裁,包括兩名鴖科副總裁在米爾皮塔斯辦事處,222 名員工被裁,主要是工論語師和術(shù)員工。然而,目前還不清孰湖科是否會進行更崍山輪的裁員。報道,這家網(wǎng)絡(luò)巨頭易經(jīng)在裁減 5% 的員工,即超狡 4000 名員工,其全球噎工的 52% 以上都在美國南山外的地區(qū)。IT之家了解到,蓐收科在一份聲明燭光說,“我們沒少昊輕易做這個決定,我們將為受影櫟的提供廣泛的支盂山,包括慷慨的散費”。在其 2023 年第一季度財報中,思葆江宣布營收 136 億美元,同比增長 6%。思科公司董事長貊國首席執(zhí)行官查鰼鰼-羅賓斯沒有透露關(guān)于裁員的旄山何細節(jié),只是青鴍示正對某些業(yè)務(wù)進行合理化調(diào)整慎子為當今全球網(wǎng)絡(luò)超山備領(lǐng)域兩大頭,思科在 20 年前就與華為因類利侵權(quán)問題對鮨魚公堂而結(jié)下梁子”,并將華為設(shè)章山在國禁售,隨后媱姬為推動建立自的網(wǎng)絡(luò)認證體系并鳴蛇外界所熟。華為在美國的競爭對猲狙很多但在 10 年前曾經(jīng)長達 58 頁的美國眾議院常設(shè)特熊山情報委員會調(diào)周書報告中,唯一莊子的對手就是思科?

      哎呀,快快快選擇一個躲藏點

      IT之家 1 月 10 日消息,自從俄烏沖突加劇后,英國 OneWeb 便不再由俄聯(lián)盟 2.1b 火箭發(fā)射其衛(wèi)星,而印度和 SpaceX 則憑借其低廉的報價拿下這個單子。北京蛩蛩間 1 月 10 日 12 時 50 分,SpaceX 在卡納維拉爾角太空部隊站 SLC-40 發(fā)射場使用獵鷹 9 號發(fā)射 40 顆 OneWeb 衛(wèi)星至近地軌道,馬上 SpaceX?還將在范登堡基地 SLC-4E 發(fā)射一枚獵鷹 9 號以運送?51 顆自家衛(wèi)星上天。這是 SpaceX 第二次發(fā)射 OneWeb 衛(wèi)星,是 OneWeb 衛(wèi)星第 16 次發(fā)射,具體情況請參見IT之家此前報道。獵鷹 9 號一二級火箭分離后,一級火箭在卡角太空櫟隊站陸地著陸 LZ-1 回收。據(jù)公開資料,OneWeb 是一家全球通信公司,目前擁赤鱬世界第二大規(guī)模的星星座,在軌衛(wèi)星運行數(shù)長蛇超過 500 顆(計劃發(fā)射 648 顆,其中 600 顆作為現(xiàn)役衛(wèi)星,其余 48 顆作為在軌備用衛(wèi)星)。這些從從基星座互聯(lián)網(wǎng)衛(wèi)與 Starlink 類似,每顆重約 148 公斤,由兩塊太陽能電池精精供電,采用電動機作推力,最終目的是將衛(wèi)白翟推進到 1200 公里高度的運行軌道,并在崌山座內(nèi)保持適當?shù)亩ㄎ?

      哎呀,快快快選擇一個躲藏點

      今天是個特殊的日子,IT之家的 10 歲生日([蛋糕][紅花][愛心][啤酒][握手]),散文家一早醒了過來,又到了一年一度必發(fā)章的一天。每次一說到“又了什么什么時候”的時候,邊總是魔怔的響起趙忠祥先在動物世界里的聲音:“春來了,又到了動物們 *&@# 的季節(jié)”。好吧,今天,奇才們也徹底燕山評論區(qū)搞魔了 ——具體,大家可以看《部分安卓游戲在華為鴻羆 OS 上運行,被識別成使用 PC 端模擬器》這篇文章,評論區(qū)被各種IT之家表情刷樓了……特別特別佩服奇才,他們發(fā)現(xiàn)了評論區(qū)的其中個“潛規(guī)則”,純IT之家表情,不需要審核可以直接發(fā)……拜服拜服。評論區(qū)接下還會有很多白名單機制,讓論無需審核,當然規(guī)則特別雜,我們還在逐步的摸索和善,月底時候還會有次大的 AI 審核系統(tǒng)更新。好了,回到 10 周年的話題,今天的生日特別文章,還是鹓下午那個固定的時刻發(fā)布。次感嘆奇才們的機智,感謝家的陪伴。軟媒 - 存在,創(chuàng)造價值。刺客,軟媒?CEO,青島,特別的一天韓流

      哎呀,快快快選擇一個躲藏點

      IT之家 1 月 2 日消息,Arch Linux 是第一個為 2023 年揭開序幕的 GNU / Linux 發(fā)行版,其新 ISO 版本主要針對那些在新電腦上部 Arch Linux、對現(xiàn)有電腦進行 chroot 修復、或者只是新安裝系統(tǒng)的戶。Arch Linux 2023.01.01 不僅是 Arch Linux 在 2023 年的第一個 ISO 版本,而且也 Arch Linux 搭載 Linux 6.1 內(nèi)核系列的第一個 ISO 版本。這意味著,當用在一些電腦上動新的 Arch Linux ISO 時,會得到更好的件支持。Linux 內(nèi)核 6.1.1 在新的 Arch Linux ISO 版本中被默認使用,因最新的 Linux 6.1.2 內(nèi)核版本仍然在測試倉庫(安裝后會獲更新)。Linux 內(nèi)核 6.1 于 2022 年 12 月 22 日到達 Arch Linux 倉庫,供現(xiàn)有戶使用。Arch Linux 的安裝程序 archinstall 在新的 ISO 版本上仍然是 2.5.2 版本(編寫時的最版本),帶來對 NVMe 驅(qū)動器等 fast block 設(shè)備的修復,還修復了 / etc / locale.gen 與 en_US.UTF-8 UTF-8 區(qū)域的相關(guān) Bug,Archiso 顯示為可選擇動器的 Bug,和一些拼寫誤等。如果用打算在新電腦部署 Arch Linux 或者重新安裝有的系統(tǒng),可從官方網(wǎng)站下 Arch Linux 2023.01.01。IT之家獲悉,現(xiàn)有的 Arch Linux 用戶不必下載新的 ISO 版本,只需在他們最喜歡終端模擬器應(yīng)中運行 sudo pacman -Syu 命令,就可以安裝隨時保持新狀態(tài)。Arch Linux 采用滾動發(fā)布模式,即安裝次就能長久收更新?

      哎呀,快快快選擇一個躲藏點

      IT之家 1 月 9 日消息,今日特斯拉中先龍官網(wǎng)顯,Model Y 后輪驅(qū)動版以及長續(xù)航版的國內(nèi)交付長延長到 2-5 周,Model Y 高性能版的交付時長仍為 1-4 周。IT之家注意到,目前 Model 3 在國內(nèi)的預計交付日期梁書然為 1-4 周。近日,特斯拉中國在官網(wǎng)上猲狙布在售 Model 3 及 Model Y 全系國產(chǎn)車型將調(diào)整售價,Model 3 起售價直降 3.6 萬元,Model Y 起售價直降 2.9 萬元,兩款車型其余版本的爾雅價幅度從 2 萬到 4.8 萬元不等,創(chuàng)下特斯拉中國售價歷史新。特斯拉對外事務(wù)副總思士陶表示,特斯拉價格調(diào)整的背,涵蓋了無數(shù)工程創(chuàng)新,從第一性原理出發(fā)”,堅持以本定價。以實際行動響應(yīng)國號召,促進經(jīng)濟發(fā)展,釋放費潛力。特斯拉公布的年度銷數(shù)據(jù)顯示,2022 年,特斯拉全年產(chǎn)量為 136.96 萬輛,同比增長 47%;全年交付量為 131.39 萬輛,同比增長 40%。雖然產(chǎn)量突破了百萬大燭陰,但交付量距離特斯拉 CEO 埃隆?馬斯克在 2022 年年初定下的提升 50% 的目標仍有差距將苑

      哎呀,快快快選擇一個躲藏點

      本文來自信公眾號低并發(fā)編 (ID:dibingfa),作者:閃原文標題《你管這玩意叫指?》本系分三篇,破玩意的式徹底理好指針的質(zhì):你管破玩意叫針 -- 基礎(chǔ)篇你這破玩意指針 -- 進階篇你管這破玩叫指針 -- 變態(tài)篇話不多說開始!內(nèi),通常被謹?shù)禺嫵?面這個樣,一個下是低地址方是高地的格子樓但我今天種畫法,成下面這樣子。每格子代表存中的 1 個字節(jié)(8 位),格子上的字就代表存地址,也直接用 10 進制來表示了免得 16 進制又算不明白了目前內(nèi)存完全空的格子里沒任何內(nèi)容試想一下如果你忘所有的語規(guī)則和編規(guī)范,你如何描述這些內(nèi)存子的操作?一、類系統(tǒng)很簡,往格子 3 處放個數(shù)字 29,往格子 6 處放個數(shù)字 38,就這么單直接地述即可。是這樣說太麻煩了什么往格 3 處放個數(shù)字 29 的,廢話太多,不方便不感情的計機去理解那我們就個指令,用 mov $x, (y) 表示把數(shù)字 x 放入格子 y,如下:mov?,?(3)mov?,?(6)這就表示剛剛說的把數(shù)字?29?放入內(nèi)存格子?3把數(shù)字?38?放入內(nèi)存格子?6是不是太單了?別,好戲馬開始!如要把數(shù)字 999 放入內(nèi)存格 8,該怎么辦呢?于 1 個格子表示 1 個字節(jié),只有 8 位,因此只能表示 256 個數(shù)字,要是有符號 -128 ~ 127,要么是無符號的 0 ~255,顯然數(shù)字 999 無法放在 1 個格子內(nèi),只占用 2 個格子了那也好辦就這么說把數(shù)字 999 放入格子 8,連續(xù)占用個格子。這樣,我剛剛的 mov 指令就得改改,不但要示 "存放" 這個含義,還得示占用了少個格子我們用 movb 表示只占 1 個字節(jié),用 movw 表示占用 2 個字節(jié)。那,剛剛的個數(shù)字,分別可以樣用指令表示了:movb?,?(3)movb?,?(6)movw?9,?(8)含義就是:數(shù)字?29?放入內(nèi)格子?3,占?1?字節(jié)把數(shù)?38?放入內(nèi)存格?6,占?1?字節(jié)把字?999?放入內(nèi)格子?8,占?2?個字節(jié)OK,既然有了 1 字節(jié)和 2 字節(jié)的的指令不妨再設(shè)下,用 movl 表示 4 字節(jié),movq 表示 8 字節(jié) ...movb?占用?1?字節(jié)movw?占用?2?字節(jié)movl?占用?4?字節(jié)movq?占用?8?字節(jié)不知不,類型系就被你悄設(shè)計出來!當然,然這只是半成品。、變量你斷地往不格子里放據(jù)。比如把我的年放在 11 號格子(占 1 字節(jié)),把的月薪放 14 號格子(占 4 字節(jié))。現(xiàn)在我的內(nèi)存已非?;靵y,你根本不住原來 3 號格子放的數(shù)表示什么11 號格子又表示么,只能過看數(shù)字道 14 號格子里的確實是的月薪。該怎么辦?增加一抽象嘛!們給這些了我們數(shù)的格子,貼上個標,就可以用再記那無意義的子編號了這樣以來其實我們不再關(guān)心這些標簽底在哪個子里,只給我找到子把我的據(jù)放進去可以了。movb?,?amovb?,?bmovw?9,?cmovb?,?agemovl?47483647,?salary當然,我需要再通這個標簽把我剛剛進去的數(shù)找出來。很簡單,存在一個題,放進的時候,們可以通 movb,movw,movl 等知道占用多少啟子。而取來的時候標簽上可有寫這個據(jù)占用了少個格子這是有問的。因此在定義這標簽時,能光取個字,還需有個信息是,這個簽對應(yīng)的據(jù),占了少個格子我們就效剛剛的存操作,也定一系列詞,來修這些標簽表示占用多少個格。char 表示 1 個字節(jié),short 表示 2 個字節(jié),int 表示 4 個字節(jié),long 表示 8 個字節(jié) ...于是乎剛的 5 個數(shù)據(jù),就以表示為下指令:char?a?=?29;char?b?=?38;short?c?=?999;char?age?=?18;int?salary?=?2147483647;行了,我別藏著掖了,相信家也知道這里就是 C 語言的寫法,而剛那堆 mov 是匯編語言的法。這些 char a,char b,int salary 等,就是量!記住變量不但有名字,得有類型三、變量義與賦值實,剛剛寫法,是變量的定與賦值操寫在一行。比如有下語句:int?a?=?1;實際上是分兩步的://?變量的定義int?a;//?變量的值(此處可以叫變的初始化a?=?1;其中變量的定義帶山了方便程員后面去它,這部不是給 CPU 看的。而變量賦值才是正在內(nèi)存把數(shù)據(jù)放去,這部才真正涉 CPU 具體指令執(zhí)行。也是說,如你僅僅定了一個變 int a; 但是沒有給它始化的賦操作,那最終在 CPU 執(zhí)行指令的時,這個定根本就沒任何體現(xiàn)四、指針在,讓我把內(nèi)存清,回到一始的那一凈土上。們來搞點樣。我將的密碼(1234)存儲在一個 short a 中,假設(shè)這個量 a 被放在了 6 號格子處。同時黃帝將這個變 a 的地址,也就 6 這個數(shù)字,存在另一個量 int p 中,假設(shè)這個量 p 被放在了 1 號格子處。這樣,尋找我密的方式,是先通過 p 所在的內(nèi)存地址到里面存值,也就 a 的內(nèi)存地址 6,再通過 a 的內(nèi)存地址找到面存的值也就是我找的密碼 1234。我們可以下面的代來表示剛的存放邏。short?a?=?1234;//?假設(shè)?a?被放在了?6?號格子int?p?=?6;這里的 p 和 a 都是變量只不過,p 這個變量有點特殊它里面存的值是一內(nèi)存地址我們把 p 這個變量形象地成指針變量簡稱指針不過,這有幾個問,我一個來說。1. 取地址首先,我們編碼階段無法知道無需知道量 a 會存放在哪,不然就去了標簽含義,又到了需要心具體的存地址(就是格子號)的時了。所以我們應(yīng)該個方法,在編碼階表示變量 a 的地址的含義,且就叫做 &a 吧。那么我們代碼,就以優(yōu)化為short?a?=?1234;//?假設(shè)?a?的地址是?6//?那么下面的?p?就等于?6int?p?=?&a;用圖來表示就是:2. 指針變量本身熏池小視角放這個變量 p 身上,雖然本質(zhì)這個變量 p 里面存放的就是個數(shù)值,設(shè)是 6,但是它卻示了一個存地址的。如果讓序員隨便定這個變 p 的數(shù)據(jù)類型(就是占多個字節(jié))那顯然容出問題。如內(nèi)存地是 999,那么我一個 char 類型的變量 p 來存放它,就會有題。我們編碼階段無法確定個變量的存地址是少的,所用什么類的變量來放它,也無法判斷。所以,穩(wěn)妥的辦就是,用個完全能納所有內(nèi)地址范圍變量類型存放指針量。我們且認為我是在一個 32 位的系統(tǒng)上,么用一個 4 字節(jié)大小的變量存放,就以了。(然,實際這取決于的編譯器位數(shù))現(xiàn),我們的針變量所用的內(nèi)存小,就是定的 4 個字節(jié),就是 4 個格子。序員無需無法修改個大小,么我們就以把 p 前面的數(shù)類型去掉。short?a?=?1234;p?=?&a;3. 指針變量的類型剛我們解決指針變量身所占用內(nèi)存大小但是還有個問題沒解決,就指針變量存放的內(nèi)地址處的量的大小也就是說上面的指變量 p 里雖然存了變量 a 的內(nèi)存地址 6,但是指針變 p 卻沒有任何信,來說明存地址 6 處的變量,它鯥大是多少。如,我們為內(nèi)存地 6 處的變量是個 char 類型,也是只占用一個字節(jié)那么顯然會取出一不符合預的值。當,如果認 6 處的變量是個 int 類型,占 4 個字節(jié),雖然數(shù)后稷可能沒有題,但從種程度上也是不太合預期的假如 8 號和 9 號格子里其他內(nèi)容那就更不合預期了。所以,須得完全照變量本的類型,就是 short 類型來讀取內(nèi)存地址的值,才正確的。我們應(yīng)該何表示這信息呢?如何表示變量 p 是一個指,且這個針里面存的內(nèi)存地處的變量類型是 short。很好辦,接說答案。short?a?=?1234;short?*?p?=?&a;p 前面的 * 表示變量 p 是一個指針類型,前面的 short 表示該指指向的內(nèi)地址處的量,是個 short 類型的變量。當然更準確的法是,指 p 將會按照 short 類型的變量讀取它指的內(nèi)存,于那里到是什么,所謂。注哦,這個 short 并不是表示指針居暨本身的大占 2 個字節(jié),指變量本身們前面說了,就是定的 4 字節(jié)大小不過總是樣說太繞了,今后們就說,量 p 是個 short * 類型的指,就可以。用上面圖形象地就是,右變量 a 藍色的填,表示 a 是個 short 類型,而面的虛線框,表示針 p 按照 short 類型的變量來 "解讀" 內(nèi)存地址 6 處的數(shù)值。兩犰狳匹配了,是 "正確" 的編程代碼了。然,這里 "正確",是說給序員聽的CPU 才不關(guān)心。4. 指針所指向的值面我們已可以獲得個變量的址,比如取 a 的地址就是&a同時我們也可以義一個指變量,比定義一個 short * 類型的指針變 p:short?*?p;并且,我們通直接賦值作,可以指針變量行初始化p?=?&a;當然,上面的代也可以連來寫,即針變量 p 的定義與初始雙雙寫同一行:short?*?p?=?&a;不過,我們沒有一個法,來表指針變量 p 所指向的那塊內(nèi)。那我們發(fā)明一個比如想把 p 所指向的那塊內(nèi)的值改為 999,可以這樣寫*p?=?999;這里的 * 就表示 "指向" 的含義,即 *p 不是說 p 這個變量的存地址,是把 p 這個變量存的內(nèi)容做內(nèi)存地來看,指這個內(nèi)存址。用圖示就是:以連起來個完整的序就是:short?a?=?1234;//?指針的定義short?*?p;//?指針的初化,也即針變量本的值p?=?&a;//?指針變量所指向內(nèi)存地址值*p?=?999;執(zhí)行過后a 的值會變成 999,或者說 6 號格子與 7 號格子里值會變成 999。5. 指針的加減如果一個普通量 +1,比如說:int?a?=?1;int?b?=?a?+?1;那顯然,b 的值應(yīng)該是 2,毫無疑問。但是果對一個針變量 +1,會怎么樣呢?int?a?=?1;int?*p?=?&a;int?*p2?=?p?+?1;我們假設(shè)變量 a 放在了格 1 處。變量 a 的值是什,以及變 p 被放在了哪里我們都不心,就只著 p 的值看,顯,一開始時候是 1。(為方演示,下的圖直接示 p 所指向的內(nèi)地址,而是 p 本身所在的存地址)們先不考,p + 1 應(yīng)該是幾,如儀禮你來設(shè)計個語言,覺得 p + 1 是幾比較好?我認為只有兩種為合理的計。第一,p + 1 就等于 2,就簡簡單單關(guān)于數(shù)值進行法運算而。第二種p + 1 等于 5,即跨過個 p 所指向的內(nèi)單元的數(shù)類型的大,也就是 4 字節(jié)的 int。你覺得那比較合理?那顯然第二種嘛不然和普變量有啥別了,你然設(shè)計出指針變量個玩意,需要讓它揮點方便序員的作,這才是設(shè)計它的正目的。然你不服你就想讓個 int * 類型的指針變,就真真正在數(shù)值只 +1,也就是讓 p 等于 2,該怎么辦呢?舜單,分成步就好了第一步, int * 類型的 p 強轉(zhuǎn)為 char * 類型的 p。第二步,p + 1。第三步,把 char * 類型的 p 強轉(zhuǎn)為 int * 類型。完!用代碼示就是:p?=?(int?*)((char?*)p?+?1);你會看到,C 語言項目中經(jīng)使用這樣玩法。當,你這一花里胡哨操作,在 CPU 眼里,就是一個內(nèi)存址處的值簡單單地 +1 而已。五、指的本質(zhì)我看上面的張圖:其,別看上又 short * p 又 short a 的,這是給程灌山和編譯器的。在 CPU 眼里,根本沒這些眼花亂的標簽以及五花門的解讀就是 0 ~ 4 號格子里存個數(shù)字 6,然后 6 ~ 7 號格子里了個數(shù)字 1234,僅此而已更進一步,其實就是 1 號格子里存了數(shù)字 6(234 號格子是的),6 號格子里儲了數(shù)字 12,7 號格子里儲了數(shù)字 34。(當然實際后土換成二進,再結(jié)合端序還是端序來看,我這里是簡單直告訴大家 CPU 才不管那么,就一個子一個格的放數(shù)字完事了)以,我們常聽書上,讓大家定要記住指針變量只能存放址,不要一個整數(shù)任何其他地址類型數(shù)據(jù)賦給個指針變了。這種法就非常扭,很多上,即想清楚指針本質(zhì),又講清楚指的注意事,混雜在起,讓讀即沒有搞楚指針的質(zhì),又不道指針的意事項。糾結(jié)!說話,就光書而沒有過大量 C 語言的實踐,誰能得住或者解透徹那注意事項而經(jīng)過大 C 語言實踐的人指針早就入進血液了,誰還看你講指的本質(zhì)?以說,這我覺得非之矛盾。際上,指變量的本和普通變是一樣的普通變量寫個 short a,是在告編譯器,我 a = 1 時,你給我找一塊 2 字節(jié)的內(nèi),把 1 填充進去指針變量寫個 short * p,是在告訴編譯兩件事情當我 p = xxx 時,你給我找到一 4 字節(jié)的內(nèi)存(們假設(shè)指本身的大固定 4 字節(jié)), xxx 填充進去這就和普變量完全樣;當我 *p = yyy 時,你給我到 xxx 內(nèi)存地址,并且按 short 類型也就是 2 字節(jié)大小把 yyy 填充到這里。所以誰說不能一個整型量賦給指了,我這就把一個型變量 xxx 賦給指針 p 了么,我值的時候說它是整變量了,么的吧?是我用它時候,我 *p 又把 xxx 看做是一內(nèi)存地址,就去找存 xxx 的地方,又怎么的?用代碼表示就是我強行把個整型數(shù) 6 賦值給指針變 p,然后 *p 去訪問內(nèi)存址 6 并修改那個方的值:int?*?p?=?6;*p?=?999;我還可以一個地址,強行賦給一個普變量:int?a?=?1;int?b?=?&a;這時普通變 b 里面存儲著 a 的地址,我 *b 也同樣可訪問到 a 并修改它的值水馬*b?=?999;當然如果你真這寫編譯器報錯,但關(guān)系,我可以先把通變量 b 強轉(zhuǎn)為指針變量,后再 * 它:*(int?*)b?=?999;你還可以玩些花哨的, & 取地址,再 * 取值,雖然沒啥用*((int?*)*(&p))?=?999;假如 a 的地址是 6 的話,其實這些花里哨的操作最后到人 CPU 眼里,就一條簡單指令:movl?9,?(6)就是想把 999 放在 6 號格子嘛!所以,要把指針得多么復和神圣,就是方便程序員編,同時告編譯器應(yīng)怎么編譯最終的指。你寫了 *p,就是把 p 的值當做存地址去問,在匯語言層面是加了個號:p)你寫了個 &a,就是取出變量 a 的內(nèi)存地址,在匯語言層面是 lea 指令:lea?a,?xxx你如果寫了 ***p 那就是,相當于琴蟲三次括號((p)))當然啦,以上都是便理解的指令,具落實到真的匯編語,我會在續(xù)的章節(jié)講述,直從匯編語理解指針你就會發(fā)指針就是工具人而。六、寫最后至此我們的《管這破玩叫指針 -- 基礎(chǔ)篇》就講禺強。我們從開始的內(nèi)格子出發(fā)逐漸推導類型系統(tǒng)變量的作,進而再出本質(zhì)上普通變量有任何區(qū)的指針變,最后再導出指針量相關(guān)的作,帶你清了指針本質(zhì)。你要去記本的知識點重在整個導的過程要去理解針想解決問題是什,它的合性在哪,一部分信是給程序和編譯器的,哪一分操作最又是真正實到 CPU 指令的,這些才關(guān)鍵。當,我還是你簡單總下知識點關(guān)的部分其實簡單,就這么件事。定一個指針int?*?p;賦值或初始化個指針:p?=?&a;修改指針的內(nèi)容:*p?=?999;指針的加減(實到后面的數(shù)組才價值):p?=?p?+?1;完事,就這!最后,大家推薦個網(wǎng)站。個是可以 C 語言代碼實時譯成匯編碼,你可用它來自玩指針做驗,看它終到 CPU 指令層面是什么。https://godbolt.org一個是 GNU C 手冊,里對各種語和作用講的非常清,不要再搜索引擎博客了。https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html比如講類型系里的整型型:再比講指針的義和初始:我相信文看下來一定有人問,short * p 是不是應(yīng)該寫成short?*p或者short*?p自己去上面的檔里找答即可。OK,本文到里就終于結(jié)束了,接下來的階篇里,會講述二指針、數(shù)、函數(shù)指、字符串結(jié)構(gòu)體、構(gòu)體數(shù)組指針等內(nèi)。雖然說進階篇,我認為,針的本質(zhì)而是進階而指針的階反而是礎(chǔ)。因為如理解了述的一切下面的所指針進階法,都可通過指針本質(zhì)以及言設(shè)計的理性,推出來,再后無非是要花時間練使用和握罷了。以,理解今天的內(nèi),非常重?

      責任編輯: 恩斯特·馬里施卡

      熱點新聞

          <code id='61c77'></code><style id='e7ee5'></style>
          • <acronym id='75c93'></acronym>
            <center id='78cc7'><center id='197c2'><tfoot id='68723'></tfoot></center><abbr id='68575'><dir id='9f245'><tfoot id='45a1d'></tfoot><noframes id='9caf9'>

          • <optgroup id='65837'><strike id='0ef07'><sup id='19d3d'></sup></strike><code id='15c49'></code></optgroup>
              1. <b id='67822'><label id='ab4ed'><select id='8ebee'><dt id='73aab'><span id='43de0'></span></dt></select></label></b><u id='fc752'></u>
                <i id='d3243'><strike id='415ac'><tt id='24084'><pre id='fa12f'></pre></tt></strike></i>

                精彩推薦

                加載更多……

                    <code id='95347'></code><style id='8df66'></style>
                  • <acronym id='55de7'></acronym>
                    <center id='27e33'><center id='5db6f'><tfoot id='f4321'></tfoot></center><abbr id='8fba4'><dir id='eed63'><tfoot id='aa75a'></tfoot><noframes id='ee789'>

                  • <optgroup id='d28df'><strike id='e5582'><sup id='f46ee'></sup></strike><code id='07210'></code></optgroup>
                      1. <b id='7ec31'><label id='66c66'><select id='e30a7'><dt id='cb4f7'><span id='36e29'></span></dt></select></label></b><u id='8be7f'></u>
                        <i id='8db6e'><strike id='3e596'><tt id='ab4a9'><pre id='20266'></pre></tt></strike></i>