sizeof 的代码?

标签 c sizeof

我试图编写一个简单的代码来充当 sizeof(此代码中专门用于 int)。但为什么它显示 1 作为输出?应该是 4。

#include<stdio.h>
int SIZEOF(int *);

int main(void)
{
    int a;
    printf("Size is:%d bytes\n",SIZEOF(&a));

    return 0;
}

int SIZEOF(int *p1)
{
    int *p2;
    p2=p1;

    p1++;

    return (p1-p2);
}

最佳答案

指针算法以所指向类型的大小为单位进行运算。当您执行 p1 - p2 时,您得到的是 int 单元的数量,而不是 char 单元的数量。添加一些类型转换:

return (char *)p1 - (char *)p2;

编辑说明:SIZEOF 应该可能返回 ptrdiff_tsize_t

关于sizeof 的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684523/

相关文章:

C webserver中进程间的跨平台通信方式

c中的客户端只能连接到服务器一次

c++ - 初学者有什么实际使用的好项目

c++ - 为什么在sizeof()中添加两个变量类型会返回最大的变量大小值而不是它们的总和?

c++ - 当 A 和 B 为 "the same"时断言(sizeof(A) == sizeof(B)) 是否安全?

c - 什么是最合适的结构 sizeof 方法

c++ - 如何确定int的位数

c - 格式化字符串漏洞,覆盖变量

c - 将输出延迟到 EOF 而不是换行符

c++ - 为什么尽管有一个 int vector ,但结构的大小不变