【问题标题】:What's the difference between (int) sizeof(void *) and int?(int) sizeof(void *) 和 int 有什么区别?
【发布时间】:2012-11-23 12:57:52
【问题描述】:

我只是 C 编程的初学者。 我可以问一个简单的问题吗? (int) sizeof(void *)int 有什么区别?

例如)

#define ptrint          int
#define PTRINT          ((int) sizeof(void *))

【问题讨论】:

    标签: c int sizeof void


    【解决方案1】:

    第一种情况充当 int 的别名,因此您可以使用 ptrint 代替 int。

    第二种情况是以字节为单位的指针大小。因此,例如在 32 位系统上,它将返回 4。

    ptrint a = 8;
    ptrint b = a;
    
    int sizeofptr = PTRINT;
    

    【讨论】:

    • 感谢您的回答。 :)
    【解决方案2】:

    一个是类型,另一个是返回类型大小的表达式。

    【讨论】:

    • 感谢您的回答。我可以再问一个问题吗? (void *) 的大小是多少?
    • @user573566 指针的大小可能因平台而异。在 32 位平台上它通常是四个字节(32 位),而在 64 位平台上它通常是八个字节(64 位)。
    【解决方案3】:

    使用 ptrint,您只需定义一个新类型,它只是 int 的别名,例如:

    ptrint a;
    a = 5;
    printf("%d",(int) a); // all this is ok.
    

    使用 PTRIINT,您可以定义一个整数常量,该常量将包含系统上 void* 指针的大小。示例:

    printf("Size of a void* pointer is %d\n",PTRINT); // will work. 
    PTRINT a;  // will fail
    

    【讨论】:

    • 感谢您的回答。 :)
    【解决方案4】:

    ((int) sizeof(void *)) 是一个值(取决于您的系统和编译器实现),int 是一个类型。

    【讨论】:

    • 感谢您的回答。 :)
    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 2022-11-27
    • 2022-01-15
    • 2016-07-24
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多