關(guān)于void *和int之間相互轉(zhuǎn)換的問題

之前看到《系統(tǒng)程序員成長計劃這本書》,里面常用void *指針,然后再轉(zhuǎn)為int時直接使用強轉(zhuǎn)使用,比如void *int_pt;,使用時直接強轉(zhuǎn)(int)int_pt。我對此有點懷疑,所以自己寫了個小程序驗證了一下。證明這種用法是錯誤的。

  1. void *int_pt;,使用時直接強轉(zhuǎn)(int)int_pt, (int)int_pt值是地址值,就是int_pt指向的地址的數(shù)值。
  2. 正確使用該地址所在的int數(shù)應(yīng)該是*(int *)int_pt,包括賦值和讀取值都應(yīng)該用這種方式。

附上測試源碼:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    void *testvalue;
    testvalue = malloc(sizeof(int));
    *(int *)testvalue = 134;

    printf("%d\n", (int)testvalue);
    printf("%d\n", *(int *)testvalue);

    free(testvalue);
    return 0;
}

運行結(jié)果:

$ ./test
12738576
134
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,567評論 0 35
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,592評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,247評論 0 7
  • 2017年的秋季入學(xué)期注定是難忘的。 女兒新入大學(xué),家中盛喜之事,原計劃陪他去學(xué)校報到既不錯失女兒的重要人生階...
    springwen閱讀 353評論 0 0

友情鏈接更多精彩內(nèi)容