日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C語言中有關(guān)強(qiáng)制轉(zhuǎn)換的相關(guān)問題

 風(fēng)雪夜歸人_95 2014-07-17
一、類型強(qiáng)制轉(zhuǎn)換
其實類型強(qiáng)制轉(zhuǎn)換并沒有修改原來存儲的值,也沒有對內(nèi)存做任何的修改,只不過說在取值的時候讀取數(shù)據(jù)的長度不同,進(jìn)而產(chǎn)生了不同的結(jié)果。首先引入一個網(wǎng)上看到的程序:
 int main()
{

    char uData[50];
    short cOut;
    int i;
    void *p;
    printf("%d\n",sizeof(void *));
    char cc[2]={4,5};
    cOut=*(short *)cc;
    printf("%d\n",cOut);
    for(i=0;i<50;i++)
    {
      uData[i]=i;
    }
    i = (int *)uData;
    int j = uData;
    printf("%d\n",j);
    printf("%d\n",i);
    i = (int *)uData+1;
    printf("%d\n",i);

    cOut=*(short *)((int *)uData+1);
    printf("%d\n",cOut);

    return 0;
}

運行結(jié)果為:
 
 
通過上面的結(jié)果可以得到以下初步結(jié)論:
1. (void *)的存儲空間為4個字節(jié)
2. (int *)uData+1 等價于 uData+4
3. 小端存儲。一個字符數(shù)組轉(zhuǎn)換為一個short型的數(shù)據(jù)時,原字符數(shù)組中數(shù)組索引越大,該值在short型中所處的位越高。例: cc[0]='4'. cc[1]='5',cOut=*(short*)cc,則cOut=0x0504(十進(jìn)制就是1284)。

針對上面的程序,實際上主要解釋一句:
cOut=*(short *)((int *)uData+1);
uData是一個char型數(shù)組的首地址,擴(kuò)展為一個指向int型數(shù)據(jù)的指針;指針加1的操作實際上是指針原來的值加上指針?biāo)鶎?yīng)類型的字節(jié)數(shù)(這里是int,int在這里需要4個字節(jié))。所以,uData無論擴(kuò)展與否,其值都是2686682(一個隨機(jī)分配的起始地址,此時的*(int *)uData=0x00010203),指針加1操作后,變?yōu)?686686(此時的*((int *)uData+1)=0x0405060708)。此時該指針又進(jìn)行了一次強(qiáng)制轉(zhuǎn)換,變成一個指向short型數(shù)據(jù)的指針,最后將該指針的內(nèi)容賦給cOut。所以
cOut=0x0504(上面的結(jié)論三知道,數(shù)據(jù)是小端存儲的)。

二、指針強(qiáng)制轉(zhuǎn)換為指向指針的指針
看看下面的這段代碼:
 int main()
{

    int *p;
    int **q;
    int i = 1;
    p=&i;
    q = (int **)p;
    printf("%d\n",p);
    printf("%d\n",&p);
    printf("%d\n",*p);
    printf("%d\n",q);
    printf("%d\n",&q);
    printf("%d\n",*q);

    return 0;
}


其運行的結(jié)果為:
 
 
可見,指向指針的指針也不過是一個指針罷了,只不過指向指針的指針存儲的值是一個普通變量的地址的地址;一個指針變量也就是一個變量罷了,只不過指針存儲的是一個普通變量的地址。而將一個指針強(qiáng)制轉(zhuǎn)化為一個指針的指針,也是可行的,但是其具體的意義有多大,不清楚。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多