我试图编写一个简单的代码,作为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);
}
Run Code Online (Sandbox Code Playgroud)
指针算术以指向类型的大小为单位工作.当你这样做时p1 - p2,你会得到int单位数,而不是char单位数.添加一些演员表:
return (char *)p1 - (char *)p2;
Run Code Online (Sandbox Code Playgroud)
编者注:SIZEOF应该回归ptrdiff_t或size_t.