已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
深入淺出C指針(一)基本概念 初學(xué)者在學(xué)習(xí)C語(yǔ)言時(shí),通常會(huì)遇到兩個(gè)瓶頸,一個(gè)是“遞歸”,一個(gè)是“指針”。大學(xué)老師在講述這兩個(gè)知識(shí)點(diǎn)時(shí)通常都是照本宣科,而沒(méi)有站在一個(gè)初學(xué)者的角度來(lái)審視問(wèn)題,更沒(méi)有剖析其內(nèi)部機(jī)理。本人在此將發(fā)表一系列技術(shù)文章,希望能將C語(yǔ)言中“指針”這一概念講述清楚,希望初學(xué)者能從中收益。在此筆者也極力推薦Kenneth A.Reek寫(xiě)的Pointers On C這本書(shū)。1.內(nèi)存和地址初學(xué)者面對(duì)內(nèi)存一詞時(shí)總是有一種既陌生又熟悉的感覺(jué)。首先,在日常生活中大家總是會(huì)討論某某設(shè)備內(nèi)存有多大,是不是該加一個(gè)內(nèi)存條等等。但是,內(nèi)存究竟是什么?在此,筆者并不想深入探討內(nèi)存的本質(zhì),以及內(nèi)存在不同操作系統(tǒng)上的結(jié)構(gòu)有什么區(qū)別等等這一系列問(wèn)題。這里只希望初學(xué)者知道以下三個(gè)問(wèn)題即可:(1)內(nèi)存是計(jì)算機(jī)在運(yùn)行過(guò)程中存儲(chǔ)數(shù)據(jù)的地方(2)內(nèi)存被分割成了“無(wú)數(shù)”個(gè)小區(qū)域,每個(gè)區(qū)域的大小在不同的環(huán)境下有所不同,可能是1個(gè)字節(jié),2個(gè)字節(jié),或者多個(gè)字節(jié)。(3)每個(gè)小區(qū)域都有一個(gè)獨(dú)一無(wú)二的標(biāo)識(shí),即我們后面所說(shuō)的地址(指針)。(4)每個(gè)小區(qū)中都有包含一個(gè)值,可以是整形,浮點(diǎn)型,字符型等等。我們可以形象的用下圖表示內(nèi)存的結(jié)構(gòu):100 104 108 112 116| | | | |-(542) (3.14) (A) (12323) (-12)如圖所示,上方表示內(nèi)存的地址,下方括號(hào)中的內(nèi)容表示該地址下內(nèi)存中的值。我們想訪問(wèn)這些內(nèi)存中的值,只需要知道內(nèi)存地址即可。但是,我們?cè)趺粗牢覀円L問(wèn)的內(nèi)容其內(nèi)存地址是多少?的確,要記住這些內(nèi)存地址幾乎是不可能的,所以,編譯器可以讓我們用變量的形式訪問(wèn)他們,于是這張圖可以變成如下所示:total_count Pi m_ch money number| | | | |-(542) (3.14) (A) (12323) (-12)我們將內(nèi)存地址變成了我們更容易記住的變量,這樣我們?cè)诰帉?xiě)程序的時(shí)候就可以方便的訪問(wèn)內(nèi)存中的數(shù)據(jù)。但是,請(qǐng)記住,這只是編譯器幫助我們進(jìn)行了優(yōu)化,而真正編譯后的機(jī)器碼則是通過(guò)真正的內(nèi)存地址來(lái)訪問(wèn)內(nèi)存中的數(shù)據(jù),即尋址,關(guān)于計(jì)算機(jī)的尋址過(guò)程,有興趣的讀者可以參考計(jì)算機(jī)組成原理或者匯編語(yǔ)言等書(shū)。2.值和類(lèi)型我們首先來(lái)看一下下面這幾個(gè)表達(dá)式:int total_count = 542;float Pi = 3.14;int *p1 = &total_count;char *p2 = &m_ch;前兩個(gè)表達(dá)式很好理解,我們申明了一個(gè)整形和一個(gè)浮點(diǎn)型變量,并分別賦值為542和3.14。那后面兩個(gè)表達(dá)式是什么意思呢?我們姑且可以簡(jiǎn)單記住:在申請(qǐng)變量的表達(dá)式中,如果類(lèi)型的后面出現(xiàn)了*號(hào),那么這個(gè)變量就叫做指針,或者指針變量。指針變量分為很多種類(lèi)型,例如整形指針,浮點(diǎn)型指針,字符型指針等等。好了,我們知道了指針的概念,那么,指針到底是什么?指針也是變量,即指針變量,它和其他的變量在本質(zhì)上是沒(méi)有區(qū)別的。但是指針變量只能保存一種值,就是地址。也許你會(huì)問(wèn)了,既然指針保存的是地址,那么為什么要將指針?lè)譃槟敲炊嗟姆N類(lèi),整形值要有整形指針,字符型值要有字符型指針?為什么不能用一種指針就把所有的地址都包含了呢?難道不同類(lèi)型變量的地址也不同嗎?這個(gè)問(wèn)題,本人沒(méi)有查閱過(guò)官方的解釋?zhuān)紫瓤梢钥隙?,?nèi)存地址在理論上是沒(méi)有任何區(qū)別的,無(wú)論是用來(lái)保存什么類(lèi)型變量的內(nèi)存,其本質(zhì)都是01Bit構(gòu)成的區(qū)域,內(nèi)存地址當(dāng)然也不會(huì)有任何區(qū)別,從純技術(shù)技術(shù)的角度上講,筆者認(rèn)為編譯器完全可以建立一種制度,用統(tǒng)一的指針類(lèi)型保存不同變量的地址,這完全不會(huì)影響程序的運(yùn)行。但是編譯器沒(méi)有這樣做的原因,筆者分析主要是出于安全性的考慮。當(dāng)程序員有意或無(wú)意的將兩種不同類(lèi)型的指針?biāo)赶虻膬?nèi)存內(nèi)容進(jìn)行賦值時(shí),如果編譯器事先不能做出檢查,那么也許會(huì)在程序運(yùn)行過(guò)程中出現(xiàn)異常,例如產(chǎn)生非常嚴(yán)重的緩沖區(qū)溢出錯(cuò)誤。3.指針的間接訪問(wèn)符好了,我們將問(wèn)題回到這幾個(gè)表達(dá)式上來(lái)。現(xiàn)在的問(wèn)題是p1和p2這兩個(gè)變量中保存的是什么。拿p1為例,也許你可以這樣理解,因?yàn)閜1是指針變量,所以他的值應(yīng)該和他指向的內(nèi)存中的值一樣,所以p1 = 542. 這樣理解看似非常符合邏輯,但卻是一個(gè)大的錯(cuò)誤。雖然p1很特殊,但是指針變量也是變量,它不會(huì)聰明到自動(dòng)去完成一個(gè)非常復(fù)雜的自動(dòng)間接訪問(wèn)操作。p1的值實(shí)際是100,即變量total_count的地址。但是讀者請(qǐng)注意,100并不是傳統(tǒng)意義上整形100,例如 int *p1 = 100;這是一個(gè)錯(cuò)誤的表達(dá)式,因?yàn)椴荒苤苯訉⒄沃蒂x值給指針變量,作如下變化即可 int *p1 = (int *)100; 也就是說(shuō),如果我們輸出p1的值,打印出來(lái)將會(huì)是一串莫名其妙的數(shù)字。當(dāng)然,我們通常對(duì)這些莫名其妙的地址不感興趣,我們更感興趣的是這些地址背后影藏這怎樣的信息。所以我們可以這樣來(lái)訪問(wèn)int count = *p1;等等.讀者讀到這里也許有些糊涂了,int *p1 = &total_count; int count = *p1; 這么多的*號(hào)和&號(hào)也許讀者有些搞不清了。我們來(lái)理清一下思路。在int *p1 = &total_count;中:*p1只是一個(gè)標(biāo)識(shí),代表p1是一個(gè)指針,以后訪問(wèn)這個(gè)指針時(shí)直接p1即可,訪問(wèn)得到的值是一個(gè)地址編碼。&total_count代表一個(gè)地址,在任意一個(gè)變量前(包括指針)加上&符號(hào),都將代表這個(gè)變量所在內(nèi)存的地址。&p1則代表指針?biāo)趦?nèi)存的地址,即指針的指針(稍后詳細(xì)介紹)其實(shí)這么有什么可疑問(wèn)的,因?yàn)橹羔槺旧硪彩亲兞?,所以和其他變量本質(zhì)上沒(méi)有任何區(qū)別。在 int count = *p1;中,p1和前面說(shuō)的一樣,訪問(wèn)它的值是一個(gè)地址,而*號(hào)與之前的*號(hào)有些不同,之前的*號(hào)只是一個(gè)標(biāo)識(shí),表示當(dāng)前申請(qǐng)的變量是一個(gè)指針,而這里的*號(hào)我們給它一個(gè)新的名字,叫指針的間接訪問(wèn)符。聽(tīng)起來(lái)有些別扭,簡(jiǎn)單地理解就是,在一個(gè)指針變量前加上*號(hào)則可以訪問(wèn)該指針?biāo)硎緝?nèi)存的實(shí)際值。這里可以教初學(xué)者一個(gè)小技巧,當(dāng)利理解一個(gè)和指針有關(guān)的語(yǔ)句是,“指針”和“地址”這兩個(gè)詞可以互換,初學(xué)者姑且可以認(rèn)為“指針”就是“地址”,“地址”就是“指針”,這樣理解不確切,但卻很實(shí)用。好了,下面讓我們看一個(gè)更復(fù)雜的例子:int *p1 = &total_count;int count2 = *(*(&p1);請(qǐng)讀者在10秒鐘之內(nèi)告訴我count2的值是多少。哈哈,好吧,讓我們來(lái)一點(diǎn)點(diǎn)分析。從括號(hào)最里面開(kāi)始:p1是一個(gè)指針,他的值是total_count的地址;&p1是一個(gè)地址,即指針p1的地址,我們用剛才的小技巧來(lái)看看,即地址p1地址,即指針p1的指針。*(&p1)是一個(gè)值,這個(gè)值是&p1表示的地址所在內(nèi)存的值實(shí)際上就是p1的值,&對(duì)p1進(jìn)行了一次引用操作,*對(duì)其再解引用,實(shí)際上沒(méi)有變化。此時(shí)*(&p1)的值為total_count的地址。*(*(&p1)為total_count的值,也就是542.到此,該表達(dá)式的分析結(jié)束,不過(guò)在實(shí)際編程中,沒(méi)有人會(huì)用如此復(fù)雜的表達(dá)式進(jìn)行編碼。4.指針的指針指針的指針,即地址的地址。第一個(gè)地址是狹義上的地址,該地址實(shí)際上已經(jīng)被“值”化,第二個(gè)地址是我們傳統(tǒng)意義上的地址。這句話理解起來(lái)有些困難,我們先來(lái)看看下面的表達(dá)式;int *p1 = &total_count;int *p2 = &p1;第一個(gè)表達(dá)式的意義我們已經(jīng)清楚了,我們申請(qǐng)了一個(gè)指針變量,或者說(shuō)是地址變量,它保存的是total_count的地址。第二個(gè)表達(dá)式我們來(lái)一步步分析,p1是一個(gè)指針,即一個(gè)地址,&為地址符,加起來(lái)就是地址的地址,或者說(shuō)指針的指針。而int *p2 我們可以這樣理解 int *X,我們定義了一個(gè)指針變量X ,X為*p2,即X也是一個(gè)指針變量,加起來(lái)的意思就是我們申請(qǐng)了一個(gè)p2指針變量,這個(gè)指針變量指向的也是一個(gè)指針變量。同理: int *p3 = &p2;int *p4 = &p3;.都是成立的表達(dá)式,不過(guò)在實(shí)際編碼中,遇到的最多情況是指針和指針的指針這兩種情況。深入淺出C指針(二)一維數(shù)組 1. 數(shù)組名我們看一下下面兩個(gè)聲明:int a;int b10;我們把變量a稱(chēng)為標(biāo)量,因?yàn)樗莻€(gè)單一的值。我們把變量b稱(chēng)為數(shù)組,因?yàn)樗且恍┲档募?。b0表示數(shù)組中的第一個(gè)數(shù),b1表示數(shù)組中的第二個(gè)數(shù),以此類(lèi)推。我們知道b0的類(lèi)型是整形,那么,b的類(lèi)型是什么呢?它所表示的是什么呢?一個(gè)合乎邏輯的答案似乎是它表示整個(gè)數(shù)組,但事實(shí)并非如此。在C語(yǔ)言中,數(shù)組名永遠(yuǎn)代表一個(gè)指針常量,也就是數(shù)組第一個(gè)元素的地址,即 &b0。它的類(lèi)型取決于數(shù)組的類(lèi)型。注意,這里說(shuō)的是“指針常量”,而不是上一篇文章說(shuō)的“指針變量”。指針常量即不能改變指針?biāo)赶虻闹怠<催@樣的代碼是錯(cuò)誤的:int number = 0;int a10 = 0;a = &number;a雖然是一個(gè)整形指針,但是他是一個(gè)指針常量,不能將其值改變。請(qǐng)不要根據(jù)數(shù)組名是指針這個(gè)事實(shí)得出指針和數(shù)組是相同的結(jié)論。數(shù)組具有一些和指針完全不同的特性。例如,數(shù)組具有確定的數(shù)量值,而指針只是一個(gè)標(biāo)量值。2.下標(biāo)引用在前面的聲明的上下文環(huán)境中,下面這個(gè)表達(dá)式是什么意思呢?*(b + 3);首先,b的值是一個(gè)指向整形的指針常量。所以3這個(gè)值根據(jù)整形值得長(zhǎng)度進(jìn)行調(diào)整。加法運(yùn)算的結(jié)果是另一個(gè)指向整形的指針,即 &b3。再通過(guò)*號(hào)對(duì)其解引用操作,相當(dāng)于*(&b3)或者直接表示為b3.我們姑且可以這樣認(rèn)為:除了優(yōu)先級(jí)順序不同外,下標(biāo)引用和指針間接訪問(wèn)完全相同。例如,下面這兩個(gè)表達(dá)式是等同的:arraysubsricpt*(array + (subsript) )讓我們看一個(gè)例子,鞏固復(fù)習(xí)一下剛才的知識(shí)int array10;int *ap = array + 2;在下面有關(guān)ap的表達(dá)式中,看看你能不能寫(xiě)出對(duì)應(yīng)的array表達(dá)式:ap ,這個(gè)很容易,&array2或者*(array + 2)*ap ,這個(gè)也很容易,相當(dāng)于對(duì)ap進(jìn)行解引用操作,相當(dāng)于array2或者*(array+2)ap0,將其轉(zhuǎn)化成為*(ap + 0),即*ap,和上一個(gè)表達(dá)式等價(jià)。ap+6,這個(gè)表達(dá)式相當(dāng)于&array2+6或者*(array+2+6),即&array8或者*(array+8)*ap+6,小心,這里有兩個(gè)操作符,不過(guò)間接訪問(wèn)的優(yōu)先級(jí)高于加法操作,所以該式等價(jià)于array2+6ap6,你也許會(huì)疑問(wèn)?這是錯(cuò)的嗎?的確,在別的語(yǔ)言里他也許是錯(cuò)的,但是在C語(yǔ)言里他是正確的,我們說(shuō)過(guò),C語(yǔ)言中的下表操作與指針間接訪問(wèn)操作完全相同,即*(ap+6)& ap,這個(gè)表達(dá)式是完全合法的,它表示ap指針的地址,即指針的指針。好了如果上面的問(wèn)題都難不倒你的話,拿來(lái)看看下面這個(gè):2ap是的,你沒(méi)有看錯(cuò),2ap,不是ap2.他的答案也許會(huì)令你大吃一驚:它是合法的。把它轉(zhuǎn)化成為對(duì)等的間接訪問(wèn)表達(dá)式,你就會(huì)發(fā)現(xiàn)它的有效性:*(2 + (array))內(nèi)層的括號(hào)是多余的,即他和*(array + 2)是等價(jià)的。3.關(guān)于指針和數(shù)組的效率在此筆者不想通過(guò)反匯編來(lái)實(shí)驗(yàn)數(shù)組與指針的效率,讀者暫時(shí)可以這樣記?。骸凹俣ㄟ@兩種方法都是正確的,下標(biāo)絕不會(huì)比指針更有效率,但是指針有時(shí)會(huì)比下標(biāo)更有效率”深入淺出C指針(三)多維數(shù)組 1.概念如果某個(gè)數(shù)組的維數(shù)不止1個(gè),它就被稱(chēng)為多維數(shù)組。例如,下面這個(gè)聲明:int matrix610;創(chuàng)建了一個(gè)包含60個(gè)元素的矩陣。但是,它是6行每行10個(gè)元素,還是10行每行6個(gè)元素?為了回答這個(gè)問(wèn)題,你需要從一個(gè)不同的觀點(diǎn)視察多維數(shù)組。考慮下列這些維數(shù)不斷增加的聲明:int a;int b10;int c610;int d3610;a和b很好理解。c只是在b的基礎(chǔ)上在增加一維,所以我們把c看作是一個(gè)包含6個(gè)元素的向量,只不過(guò)他的每個(gè)元素本身又是一個(gè)包含10個(gè)元素的向量。換句話說(shuō),c是一個(gè)一維數(shù)組的一維數(shù)組。d也是如此:它本身是一個(gè)含有3個(gè)元素的向量,而這三個(gè)元素中每個(gè)元素本身又是一個(gè)含有6個(gè)元素的向量,而這6個(gè)元素各自本身又是一個(gè)含有10個(gè)元素的向量。 2.存儲(chǔ)順序請(qǐng)記住,多維數(shù)組只是表示上的一種寫(xiě)法,而在實(shí)際的內(nèi)存空間存儲(chǔ)中,還是按照順序的存儲(chǔ)方式。例如:int25;在內(nèi)存中是按順序排列的10個(gè)小區(qū)域??纯聪旅孢@個(gè)例子:int matrix610;int *mp;.mp = &matrix38printf(First value is %dn,*mp);printf(Second value is %dn,*+mp);printf(Third value is %dn,*+mp);很顯然,第一個(gè)被打印的值將是matrix38的內(nèi)容,那下一個(gè)被打印的又是什么?順序存儲(chǔ)可以回答這個(gè)問(wèn)題-下一個(gè)元素將是最右邊下標(biāo)首先變化的那個(gè),也就是matrix39。再接下去又輪到誰(shuí)呢?第9列已是最后一列。不過(guò),按順序存儲(chǔ)的規(guī)定,一行存滿后就輪到下一行,所以下一個(gè)被打印的元素將是matrix40。2.數(shù)組名一維數(shù)組的數(shù)組名是一個(gè)指針常量,這一點(diǎn)大家應(yīng)該已經(jīng)十分清楚了。它的類(lèi)型是“指向元素類(lèi)型的指針”,它指向數(shù)組元素的第一個(gè)元素。多維數(shù)組也差不多,但是這個(gè)“差不多”往往會(huì)給初學(xué)者帶來(lái)一定的誤導(dǎo),多維數(shù)組的數(shù)組名,也是一個(gè)指針,這個(gè)指針指向的是該數(shù)組的第一個(gè)“元素”,這個(gè)“元素”也是一個(gè)數(shù)組。例如,下面這個(gè)聲明:int matrix310;接著看以下的表達(dá)式:matrix15這個(gè)很簡(jiǎn)單,該表達(dá)式表示這個(gè)數(shù)組的第二行,第六列所包含的元素。matrix + 1如果你認(rèn)為這個(gè)表達(dá)式指向了第一行的第二個(gè)元素,那么你就錯(cuò)了。實(shí)際上,這個(gè)表達(dá)式指向的是第二行整個(gè)數(shù)組,而不是任何一個(gè)元素。而*(matrix + 1)是一個(gè)指向第二行第一個(gè)元素的指針。*(*(matrix + 1))表示了第二行第一個(gè)元素的具體值。其實(shí)就筆者感覺(jué),C語(yǔ)言多維數(shù)組這樣的設(shè)計(jì)方式不是十分恰當(dāng),這樣做和一維數(shù)組的規(guī)則沒(méi)有十分緊密的聯(lián)系起來(lái),就易于理解而言,matrix + 1表示第一行的第二個(gè)元素更為容易理解一些。不過(guò)可能是出于編碼的簡(jiǎn)潔性考慮,C語(yǔ)言的發(fā)明人采用了這樣“自動(dòng)換行”的處理過(guò)程。小提示:在許多其他的語(yǔ)言,比如大家熟悉的C#中,多重下標(biāo)被寫(xiě)成用逗號(hào)分割的形式。比如:matrix3,4;如果你在C語(yǔ)言中這樣寫(xiě)會(huì)發(fā)生什么呢?你的第一感覺(jué)一定是:編譯錯(cuò)誤。不過(guò)很可惜,C語(yǔ)言可以讓這樣的表達(dá)式編譯通過(guò)(還記得2array嗎?C語(yǔ)言的靈活性是其他語(yǔ)言所不能比擬的)。這樣看上去沒(méi)有什么問(wèn)題,實(shí)際這樣的表達(dá)式運(yùn)行結(jié)果一定會(huì)和你預(yù)想的結(jié)果不一樣。C語(yǔ)言的逗號(hào)表達(dá)式會(huì)將其轉(zhuǎn)換成matrix3。如果編譯器
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陜西寧陜縣文化旅游投資開(kāi)發(fā)有限責(zé)任公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年版?zhèn)€人房產(chǎn)出售交易資金監(jiān)管及風(fēng)險(xiǎn)控制合同
- 2025年全球及中國(guó)阻燃塑料膜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球3D激光雷達(dá)掃描儀行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球低截止光纖行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)有機(jī)硅柔性皮膚粘合劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025版無(wú)證二手房交易合同糾紛調(diào)解及賠償協(xié)議3篇
- 委托接送子女上下學(xué)合同
- 教育政策解讀與匯報(bào)策略
- 二零二五年度廚師個(gè)人工作室聘用合同規(guī)范4篇
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)附答案
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃?xì)庀薰菊衅腹ぷ魅藛T14人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級(jí)下冊(cè)數(shù)學(xué)第七章 相交線與平行線 單元測(cè)試卷(含答案)
- 玩具有害物質(zhì)風(fēng)險(xiǎn)評(píng)估-洞察分析
- 2024年3月天津第一次高考英語(yǔ)試卷真題答案解析(精校打?。?/a>
- 2024年河南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專(zhuān)家共識(shí)
- Hypermesh lsdyna轉(zhuǎn)動(dòng)副連接課件完整版
- 小學(xué)六年級(jí)數(shù)學(xué)計(jì)算題100道(含答案)
評(píng)論
0/150
提交評(píng)論