3

我的代码如下所示:

#include <stdio.h>
typedef struct SomeStruct* ptr;
main(){
  printf("%lu\n",sizeof(ptr));
}

给定的代码将打印struct SomeStruct*. 不过我想要sizeof(struct SomeStruct)。如果我事先不知道结构的名称,有没有办法让我仍然找到指向的结构的大小ptr

4

2 回答 2

5

如果你有一个 type 的变量ptr,你可以取消引用它:

ptr v;
sizeof(*v)
于 2012-07-23T08:02:38.473 回答
5

由于NULL是一个可以转换为 type 的变量,因此ptr只需使用它:

sizeof *(ptr)NULL

或者,您可以避免 typedef-ing 指针的丑陋做法,这个问题完全消失了。

于 2012-07-23T08:27:47.810 回答