如何在C中不使用sizeof来查找指针的大小

mez*_*zda -2 c sizeof

可能重复:
如何使用sizeof查找变量的大小

使用C,我们可以在不使用sizeof运算符的情况下以某种方式找到指针的大小吗?虽然我在google搜索时在很多地方发现了这个问题,但我找不到任何答案.任何帮助将不胜感激.谢谢

das*_*ght 10

这是一个小但合法的黑客你可以使用:

int *unused = NULL;
int **ptr = &unused;
printf("%tu\n", ((char*)(ptr+1))-(char*)ptr);
Run Code Online (Sandbox Code Playgroud)

下面是它的工作原理:

  • 回想一下,添加N指针会增加指向N类型大小的次数; 因此(ptr+1)增加sizeof(int*)了"原始"价值ptr
  • sizeof(char)总是1,所以铸造char*让你减去"原始"值; 结果是sizeof(ptr+1)操作添加.

  • 这是C程序的标志.必须向您解释的黑客和指针操作. (2认同)