我试图编写一个简单的代码来充当 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_t
或 size_t
。
关于sizeof 的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684523/