• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Xiao.Zhu C++

            Xiao.Zhu C++

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              29 隨筆 :: 14 文章 :: 17 評(píng)論 :: 0 Trackbacks
            當(dāng)我們初始化一個(gè)指針或給一個(gè)指針賦值時(shí),賦值號(hào)的左邊是一個(gè)指針,賦值號(hào)的右邊是一個(gè)指針表達(dá)式。在我們前面所舉的例子中, 絕大多數(shù)情況下,指針的類型和指針表達(dá)式的類型是一樣的,指針?biāo)赶虻念愋秃椭羔槺磉_(dá)式所指向的類型是一樣的。 ?
            例十四:?
            1。floatf=12.3;?
            2。float*fptr=&f;?
            3。int*p;?
            在上面的例子中,假如我們想讓指針p指向?qū)崝?shù)f,應(yīng)該怎么搞?是用下面的語句嗎??
            p=&f;?
            不 對(duì)。因?yàn)橹羔榩的類型是int*,它指向的類型是int。表達(dá)式&f的結(jié)果是一個(gè)指針,指針的類型是float*,它指向的類型是float。兩 者不一致,直接賦值的方法是不行的。至少在我的MSVC++6.0上,對(duì)指針的賦值語句要求賦值號(hào)兩邊的類型一致,所指向的類型也一致,其它的編譯器上我 沒試過,大家可以試試。為了實(shí)現(xiàn)我們的目的,需要進(jìn)行"強(qiáng)制類型轉(zhuǎn)換":?
            p=(int*)&f;?
            如果有一個(gè)指針 p,我們需要把它的類型和所指向的類型改為TYEP* 和TYPE,?
            那么語法格式是:?
            (TYPE*)p;
            ?
            這樣強(qiáng)制類型轉(zhuǎn)換的結(jié)果是一個(gè)新指針,該新指針的類型是TYPE*,它指向的類型是TYPE,它指向的地址就是原指針指向的地址。而原來的指針p的一切屬性都沒有被修改。
            ?
            一個(gè)函數(shù)如果使用了指針作為形參,那么在函數(shù)調(diào)用語句的實(shí)參和形參的結(jié)合過程中,也會(huì)發(fā)生指針類型的轉(zhuǎn)換。?
            例十五:?
            voidfun(char*);?
            inta=125,b;?
            fun((char*)&a);?
            ...?
            ...?
            voidfun(char*s)?
            {?
            charc;?
            c=*(s+3);*(s+3)=*(s+0);*(s+0)=c;?
            c=*(s+2);*(s+2)=*(s+1);*(s+1)=c;?
            }?
            }?
            注 意這是一個(gè)32位程序,故int類型占了四個(gè)字節(jié),char類型占一個(gè)字節(jié)。函數(shù)fun的作用是把一個(gè)整數(shù)的四個(gè)字節(jié)的順序來個(gè)顛倒。注意到了嗎?在函數(shù) 調(diào)用語句中,實(shí)參&a的結(jié)果是一個(gè)指針,它的類型是int*,它指向的類型是int。形參這個(gè)指針的類型是char*,它指向的類型是char。 這樣,在實(shí)參和形參的結(jié)合過程中,我們必須進(jìn)行一次從int*類型到char*類型的轉(zhuǎn)換。結(jié)合這個(gè)例子,我們可以這樣來想象編譯器進(jìn)行轉(zhuǎn)換的過程:編譯 器先構(gòu)造一個(gè)臨時(shí)指針char*temp,?然后執(zhí)行temp=(char*)&a,最后再把temp的值傳遞給s。所以最后的結(jié)果是:s的類型 是char*,它指向的類型是char,它指向的地址就是a的首地址。?
            我們已經(jīng)知道,
            指針的值就是指針指向的地址,在32位程序中,指針的值其實(shí)是一個(gè)32位整數(shù)。
            那可不可以把一個(gè)整數(shù)當(dāng)作指針的值直接賦給指針呢?就象下面的語句: ?
            unsignedinta;?
            TYPE*ptr;//TYPE是int,char或結(jié)構(gòu)類型等等類型。?
            ...?
            ...?
            a=20345686;?
            ptr=20345686;//我們的目的是要使指針ptr指向地址20345686(十進(jìn)制?
            )?
            ptr=a;//我們的目的是要使指針ptr指向地址20345686(十進(jìn)制)?
            編譯一下吧。結(jié)果發(fā)現(xiàn)后面兩條語句全是錯(cuò)的。那么我們的目的就不能達(dá)到了嗎?不,還有辦法:?
            unsignedinta;?
            TYPE*ptr;//TYPE是int,char或結(jié)構(gòu)類型等等類型。?
            ...?
            ...?
            a=某個(gè)數(shù),這個(gè)數(shù)必須代表一個(gè)合法的地址;?
            ptr=(TYPE*)a;//呵呵,這就可以了。?
            嚴(yán)格說來這里的(TYPE*)和指針類型轉(zhuǎn)換中的(TYPE*)還不一樣。這里的(TYP?
            E*)的意思是把無符號(hào)整數(shù)a的值當(dāng)作一個(gè)地址來看待。上面強(qiáng)調(diào)了a的值必須代表一個(gè)合法的地址,否則的話,在你使用ptr的時(shí)候,就會(huì)出現(xiàn)非法操作錯(cuò)誤。?
            想想能不能反過來,把指針指向的地址即指針的值當(dāng)作一個(gè)整數(shù)取出來。完全可以。下面的例子演示了把一個(gè)指針的值當(dāng)作一個(gè)整數(shù)取出來,然后再把這個(gè)整數(shù)當(dāng)作一個(gè)地址賦給一個(gè)指針:?
            例十六:?
            inta=123,b;?
            int*ptr=&a;?
            char*str;?
            b=(int)ptr;//把指針ptr的值當(dāng)作一個(gè)整數(shù)取出來。?
            str=(char*)b;//把這個(gè)整數(shù)的值當(dāng)作一個(gè)地址賦給指針str。?
            好了,現(xiàn)在我們已經(jīng)知道了,可以把指針的值當(dāng)作一個(gè)整數(shù)取出來,也可以把一個(gè)整數(shù)值當(dāng)作地址賦給一個(gè)指針。
            posted on 2007-03-12 10:46 Xiao.Zhu 閱讀(192) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++
            2021国产精品久久精品| 久久婷婷综合中文字幕| 国产精品免费久久| 欧美大香线蕉线伊人久久| 久久亚洲日韩看片无码| 伊人色综合久久天天人守人婷| 国产福利电影一区二区三区,免费久久久久久久精 | 国产午夜精品理论片久久| 中文字幕一区二区三区久久网站 | 人人狠狠综合久久亚洲婷婷 | 久久99精品国产| 91精品日韩人妻无码久久不卡| 亚洲精品高清久久| 久久er国产精品免费观看8| 久久福利片| 亚洲精品高清一二区久久| 亚洲日韩欧美一区久久久久我 | 模特私拍国产精品久久| 伊人久久大香线蕉综合热线| yy6080久久| 久久久久久久久久久久中文字幕 | 色婷婷综合久久久久中文 | 欧美激情精品久久久久久| 亚洲欧美成人久久综合中文网 | 国产成人精品三上悠亚久久| 无遮挡粉嫩小泬久久久久久久| 久久丫精品国产亚洲av不卡| 久久99精品久久久久子伦| 国产成人精品久久亚洲高清不卡 | 久久中文字幕视频、最近更新| 99久久国产精品免费一区二区| 久久美女人爽女人爽| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 国产福利电影一区二区三区久久久久成人精品综合 | 久久成人影院精品777| 天堂无码久久综合东京热| 日韩AV无码久久一区二区| 国产精品久久久久久久午夜片| 久久人人爽人人爽人人片AV东京热 | 久久99中文字幕久久| 大香伊人久久精品一区二区|