freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c學(xué)習(xí)步驟(參考版)

2024-10-28 22:40本頁(yè)面
  

【正文】 下面的例子演示了把一個(gè)指針的值當(dāng)作一個(gè)整數(shù)取出來(lái),然后再把這個(gè)整數(shù)當(dāng)作一個(gè)地址賦給一個(gè)指針: 例十六: inta=123,b。想想能不能反過(guò)來(lái),把指針指向的地址即指針的值當(dāng)作一個(gè)整數(shù)取出來(lái)。這里的(TYPE*)的意思是把無(wú)符號(hào)整數(shù)a的值當(dāng)作一個(gè)地址來(lái)看待。......a=某個(gè)數(shù),這個(gè)數(shù)必須代表一個(gè)合法的地址; ptr=(TYPE*)a;//呵呵,這就可以了。TYPE*ptr。結(jié)果發(fā)現(xiàn)后面兩條語(yǔ)句全是錯(cuò)的。//我們的目的是要使指針ptr指向地址20345686(十進(jìn)制)ptr=a。......a=20345686。TYPE*ptr。我們已經(jīng)知道,指針的值就是指針指向的地址,在32位程序中,指針的值其實(shí)是一個(gè)32位整數(shù)。a,最后再把temp的值傳遞給s。這樣,在實(shí)參和形參的結(jié)合過(guò)程中,我們必須進(jìn)行一次從int*類型到char*類型的轉(zhuǎn)換。a的結(jié)果是一個(gè)指針,它的類型是int*,它指向的類型是int。函數(shù)fun的作用是把一個(gè)整數(shù)的四個(gè)字節(jié)的順序來(lái)個(gè)顛倒。*(s+1)=c。c=*(s+2)。*(s+3)=*(s+0)。......void fun(char*s){ char c。fun((char*)amp。例十五: void fun(char*)。而原來(lái)的指針p的一切屬性都沒有被修改。f。兩者不一致,直接賦值的方法是不行的。表達(dá)式amp。不對(duì)。在上面的例子中,假如我們想讓指針p指向?qū)崝?shù)f,應(yīng)該怎么搞?是用下面的語(yǔ)句嗎? p=amp。3。float *fptr=amp。float f=。在我們前面所舉的例子中,絕大多數(shù)情況下,指針的類型和指針表達(dá)式的類型是一樣的,指針?biāo)赶虻念愋秃椭羔槺磉_(dá)式所指向 的類型是一樣的。第八章。在函數(shù)調(diào)用中,當(dāng)把str作為實(shí)參傳遞給形參s后,實(shí)際是把str的值傳遞給了s,s所指向的地址就和str所指向的地址一致,但是str和s各自占用各自的存儲(chǔ)空間。} 這個(gè)例子中的函數(shù)fun統(tǒng)計(jì)一個(gè)字符串中各個(gè)字符的ASCII碼值之和。s++。39。39。......int fun(char*s){ int num=0。char str[]=“abcdefghijklmn”。例十三: int fun(char*)。可以把指針作為函數(shù)的形參。........inta=(*pfun1)(“abcdefg”,7)。int(*pfun1)(char*,int)。指針和函數(shù)的關(guān)系可以把一個(gè)指針聲明成為一個(gè)指向函數(shù)的指針。通過(guò)指針訪問結(jié)構(gòu)成員的正確方法應(yīng)該是象例十二中使用指針ptr的方法。這也證明了指針的靈活性。所以,在例十二中,即使*pstr訪問到了結(jié)構(gòu)對(duì)象ss的第一個(gè)成員變量a,也不能保證*(pstr+1)就一定能訪問到結(jié)構(gòu)成員b。所有的C編譯器在排列數(shù)組的單元時(shí),總是把各個(gè)數(shù)組單元存放在連續(xù)的存儲(chǔ)區(qū)里,單元和單元之間沒有空隙。//訪問了第1號(hào)單元*(pa+2)。通過(guò)指針pa訪問數(shù)組array的三個(gè)單元的方法是: *pa。呵呵,雖然我在我的MSVC++,但是要知道,這樣使用pstr來(lái)訪問結(jié)構(gòu)成員是不正規(guī)的,為了說(shuō)明為什么不正規(guī),讓我們看看怎樣通過(guò)指針來(lái)訪問數(shù)組的各個(gè)單元: 例十二:int array[3]={35,56,37}。//訪問了ss的成員b。又請(qǐng)問怎樣通過(guò)指針pstr來(lái)訪問ss的三個(gè)成員變量? 答案:*pstr;//訪問了ss的成員a。ptrb。但是它的 //類型和它指向的類型和ptr是不同的。ss。它的類型是MyStruct*, //它指向的類型是MyStruct。ss。//聲明了結(jié)構(gòu)對(duì)象ss,并把ss的三個(gè)成員初始化為20,30和40。int c。例十一: struct MyStruct { int a。第六章。例如: int(*ptr)[10]。array中,array代表數(shù)組本身。上例中ptr是一個(gè)指針,它的類型是int(*)[10],他指向的類型是int[10],我們用整個(gè)數(shù)組的首地址來(lái)初始化它。ptr=amp。例十: int array[10]。)中,array扮演的是指針,故array+n的結(jié)果是一個(gè)指針,它的類型是TYPE*,它指向的類型是TYPE,它指向數(shù)組第n號(hào)單元。sizeof(*array)測(cè)出的是數(shù)組單元的大小。在表達(dá)式sizeof(array)中,數(shù)組名array代表數(shù)組本身,故這時(shí)sizeof函數(shù) 測(cè)出的是整個(gè)數(shù)組的大小。該指針的值是不能修改的,即類似array++的表達(dá)式是錯(cuò)誤的。下面總結(jié)一下數(shù)組的數(shù)組名的問題。39。39。str+1也是一個(gè)指針,它指向數(shù)組的第1號(hào)單元,它的類型是char**,它指向的類型是char*。39。39。把指針數(shù)組名str當(dāng)作一個(gè)指針的話,它指向數(shù)組的第0號(hào)單元,它的類型是char**,它指向的類型是char*。//也可寫成strcpy(s,*(str+2))。//也可寫成strcpy(s,*(str+1))。//也可寫成strcpy(s,*str)。例九: char*str[3]={ “Hello,thisisasample!”, “Hi,goodmorning.”, “Helloworld” }。同理,array+3是一個(gè)指向數(shù)組第3個(gè)單元的指針,所以*(array+3)等于3。上例中,一般而言數(shù)組名array代表數(shù)組本身,類型是int [10],但如果把a(bǔ)rray看做指針的話,它指向數(shù)組的第0個(gè)單元,類型是int*,所指向的類型是數(shù)組單元的類型即int。value=array[4]。value=array[3]。......value=array[0]。數(shù)組和指針的關(guān)系數(shù)組的數(shù)組名其實(shí)可以看作一個(gè)指針。*ptr是一個(gè)左值,因?yàn)?ptr這個(gè)指針已經(jīng)占據(jù)了內(nèi)存,其實(shí)*ptr就是指針pa,既然pa已經(jīng)在內(nèi)存中有了自己的位置,那么*ptr當(dāng)然也有了自己的位置。在例七中,amp。//*(parr+2)是指針表達(dá)式由于指針表達(dá)式的結(jié)果是一個(gè)指針,所以指針表達(dá)式也具有指針?biāo)哂械乃膫€(gè)要素:指針的類型,指針?biāo)赶虻念愋?,指針指向的?nèi)存區(qū),指針自身占據(jù)的內(nèi)存。//*parr是指針表達(dá)式str=*(parr+1)。//如果把a(bǔ)rr看作指針的話,arr也是指針表達(dá)式 char*str。例七: char*arr[20]。pa++。b都是指針表達(dá)式。b。pa也是一個(gè)指針表達(dá)式。pa。a是一個(gè)指針表達(dá)式。a。int *pa。下面是一些指針表達(dá)式的例子: 例六: int a,b。指針表達(dá)式。//*ptr的結(jié)果是ptr所指向的東西,在這里是一個(gè)指針,對(duì)這個(gè)指針再做一次*運(yùn)算,結(jié)果就是一個(gè)int類型的變量。b來(lái)給*ptr賦值就是毫無(wú)問題的了。//*ptr是個(gè)指針,amp。*ptr=amp。該指針?biāo)赶虻念愋褪莗的類型,這里是int*。//amp。ptr=amp。*p=24。//amp。p=amp。int *p。例五: int a=12。*p的運(yùn)算結(jié)果就五花八門了。amp。和* 這里amp。第三章。一個(gè)指針ptrold減去一個(gè)整數(shù)n后,結(jié)果是一個(gè)新的指針ptrnew,ptrnew的類型和ptrold的類型相同,ptrnew所指向的類型和ptrold所指向的類型也相同。ptrnew的值將比ptrold的值增加了n乘sizeof(ptrold所指向的類型)個(gè)字節(jié)。...for(i=0。int *ptr=array。由于char類型的長(zhǎng)度是一個(gè)字節(jié),所以,原來(lái)ptr是指向數(shù)組a的第0號(hào)單元開始的四個(gè)字節(jié),此時(shí)指向了數(shù)組a中從第4號(hào)單元開始的四個(gè)字節(jié)。接下來(lái)的第3句中,指針ptr被加了1,編譯器是這樣處理的:它把指針 ptr的值加上了sizeof(int),在32位程序中,是被加上了4。ptr++。int *ptr=a。char a[20]。指針的這種運(yùn)算的意義和通常的數(shù)值的加減運(yùn)算的意義是不一樣的。第二章。在32位平臺(tái)里,指針本身占據(jù)了4個(gè)字節(jié)的長(zhǎng)度。指針本身所占據(jù)的內(nèi)存區(qū)。在例一中,指針?biāo)赶虻念愋鸵呀?jīng)有了,但由于指針還未初始化,所以它所指向的內(nèi)存區(qū) 是不存在的,或者說(shuō)是無(wú)意義的。以后,我們說(shuō)一個(gè)指針的值是XX,就相當(dāng)于說(shuō)該指針指向了以XX為首地址的一片內(nèi)存區(qū)域;我們說(shuō)一個(gè)指針指向了某塊內(nèi)存區(qū)域,就相當(dāng)于說(shuō)該指針的值是這塊內(nèi)存區(qū)域的首地址。在32位程序里,所有類型的指針的值都是一個(gè)32位整數(shù),因?yàn)?2位程序里內(nèi)存地址全都是32位長(zhǎng)。指針的值,或者叫指針?biāo)赶虻膬?nèi)存區(qū)或地址。我看了不少書,發(fā)現(xiàn)有些寫得差的書中,就把指針的這兩個(gè)概念攪在一起了,所以看起書來(lái)前后矛盾,越看越糊涂。指針的類型(即指針本身的類型)和指針?biāo)赶虻念愋褪莾蓚€(gè)概念。//指針?biāo)赶虻牡念愋褪莍nt()[3](5)int*(*ptr)[4]。//指針?biāo)赶虻牡念愋褪莄har(3)int**ptr。例如:(1)int*ptr。當(dāng)你通過(guò)指針來(lái)訪問指針?biāo)赶虻膬?nèi)存區(qū)時(shí),指針?biāo)赶虻念愋蜎Q定了編譯器將把那片內(nèi)存區(qū)里的內(nèi)容當(dāng)做什么來(lái)看待。//指針的類型是int*(*)[4] 怎么樣?找出指針的類型的方法是不是很簡(jiǎn)單?2。//指針的類型是int**(4)int(*ptr)[3]。//指針的類型是int*(2)char*ptr。這是指針本身所具有的類型。指針的類型。(5)int*(*ptr)[4]。(3)int**ptr。先聲明幾個(gè)指針放著做例子: 例一:(1)int*ptr。要搞清一個(gè)指針需要搞清指針的四方面的內(nèi)容:指針的類型,指針?biāo)赶虻念愋?,指針的值或者叫指針?biāo)赶虻膬?nèi)存區(qū),還有指針本身所占據(jù)的內(nèi)存區(qū)。i八.指針詳解第一章。...//此處略去為整型數(shù)組賦值的代碼。我們可以用一個(gè)指針和一個(gè)循環(huán)來(lái)遍歷一個(gè)數(shù)組,看例子: 例三: 例三: int array[20]。由于地址是用字節(jié)做單位的,故ptr所指向的地址由原來(lái)的變量a的地址向高地址方向增加了4個(gè)字節(jié)。在上例中,指針ptr的類型是int*,它指向的類型是int,它被初始化為指向整形變量a。......3。2。例如: 例二:1。指針的算術(shù)運(yùn)算指針可以加上或減去一個(gè)整數(shù)。指針本身占據(jù)的內(nèi)存這個(gè)概念在判斷一個(gè)指針表達(dá)式是否是左值時(shí)很有用。指針本身占了多大的內(nèi)存?你只要用函數(shù)sizeof(指針的類型)測(cè)一下就知道了。以后,每遇到一個(gè)指針,都應(yīng)該問問:這個(gè)指針的類型是什么?指針指向的類型是什么?該指針指向了哪里? 4。指針?biāo)赶虻膬?nèi)存區(qū)和指針?biāo)赶虻念愋褪莾蓚€(gè)完全不同的概念。指針?biāo)赶虻膬?nèi)存區(qū)就是從指針的值所代表的那個(gè)內(nèi)存地址開始,長(zhǎng)度為sizeof(指針?biāo)赶虻念愋?的一片內(nèi)存區(qū)。指針的值是指針本身存儲(chǔ)的數(shù)值,這個(gè)值將被編譯器當(dāng)作一個(gè)地址,而不是一個(gè)一般的數(shù)值。3。當(dāng)你對(duì)C越來(lái)越熟悉時(shí),你會(huì)發(fā)現(xiàn),把與指針攪和在一起的“類型”這個(gè)概念分成“指針的類型”和“指針?biāo)赶虻念愋汀眱蓚€(gè)概念,是精通指針的關(guān)鍵點(diǎn)之一。//指針?biāo)赶虻牡念愋褪?int *()[4] 在指針的算術(shù)運(yùn)算中,指針?biāo)赶虻念愋陀泻艽蟮淖饔谩?/指針?biāo)赶虻牡念愋褪?int *(4)int(*ptr)[3]。//指針?biāo)赶虻念愋褪莍nt(2)char *ptr。從語(yǔ)法上看,你只須把指針聲明語(yǔ)句中的指針名字和名字左邊的指針聲明符 * 去掉,剩下的就是指針?biāo)赶虻念愋?。指針?biāo)赶虻念愋汀?/指針的類型是 int(*)[3](5)int *(*ptr)[4]。//指針的類型是char *(3)int **ptr。讓我們看看例一中各個(gè)指針的類型:(1)int *ptr。從語(yǔ)法的角度看,你只要把指針聲明語(yǔ)句里的指針名字去掉,剩下的部分就是這個(gè)指針的類型。1。(5)int *(*ptr)[4]。(3)int **ptr。先聲明幾個(gè)指針放著做例子: 例一:(1)int *ptr。要搞清一個(gè)指針需要搞清指針的四方面的內(nèi)容:指針的類型,指針?biāo)赶虻念愋?,指針的值或者叫指針?biāo)赶虻膬?nèi)存區(qū),還有指針本身所占據(jù)的內(nèi)存區(qū)。(因?yàn)橘N這些東西沒有灌水之嫌?。┑谝徽?。3。2。我的目的是:1。指針是c的靈魂。c語(yǔ)言的其它各種特性,在basic中都有類似的東西。指針是c和c++中的難點(diǎn)和重點(diǎn)。由于小學(xué)時(shí)語(yǔ)文沒學(xué)好,所以竭盡全力也未必能達(dá)到這個(gè)目的。這是我的帖子的宗旨。}void main(){int nMyNumber = 18。void AddFive(int*Number)39。void AddFive(int Number)39。試著運(yùn)行這個(gè)程序,自己去體會(huì)一下。cout}問題出在函數(shù)AddFive里用到的Number是變量nMyNumber的一個(gè)副本而傳遞給函數(shù),而不是變量本身。}void main(){int nMyNumber = 18。(譯者:假如在程序中調(diào)用了兩次SomeFunction,你又該如何修改這個(gè)程序呢?請(qǐng)讀者自己思考)傳遞指針到函數(shù)傳遞指針到函數(shù)是非常有用的,也很容易掌握。}只有一行與前一個(gè)程序不同,但就是這最后一行十分地重要。}void main(){SomeFunction()。void SomeFunction(){ // 讓指針指向一個(gè)新的整型pPointer = new int。在這你終止了一個(gè)有效的指針(一個(gè)確實(shí)指向某個(gè)內(nèi)存的指針)。所以這是很重要的,在你用完它以后,請(qǐng)釋放它的空間,如:delete pPointer。可結(jié)果是,你并沒有告訴電腦你已不再需要這塊內(nèi)存空間了,所以它會(huì)繼續(xù)占據(jù)著內(nèi)存空間造成浪費(fèi),甚至你的程序運(yùn)行完畢,其它程序運(yùn)行時(shí)它還存在。問題是:你動(dòng)態(tài)地分配了一個(gè)內(nèi)存空間,可它絕不會(huì)被自動(dòng)刪除。但是你再仔細(xì)讀讀上面這個(gè)程序,雖然它得到了正確結(jié)果,可仍有一個(gè)嚴(yán)重的錯(cuò)誤。當(dāng)SomeFunction調(diào)用時(shí),它分配了一個(gè)內(nèi)存,并讓pPointer指向它。}void main(){SomeFunction()。void SomeFunction(){ // 讓指針指向一個(gè)新的整型pPointer = new int。這種格式是一個(gè)規(guī)則,這樣寫你是不會(huì)錯(cuò)的。下面是一個(gè)新例,這一次是用double雙精型:double *pDouble。第一行聲明一個(gè)指針pNumber。下面的代碼就是一個(gè)為一個(gè)整型數(shù)據(jù)分配內(nèi)存的例子:int *pNumber。它是用來(lái)在不必定義變量的情況下分配內(nèi)存和讓指針去指向它們。由于大多數(shù)程序員都是用C++,所以我用到的是C++中常用的稱謂。
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1