获取由typedefed指针指向的sizeof类型

时间:2012-07-23 08:01:42

标签: c sizeof

我的代码如下所示:

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

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

2 个答案:

答案 0 :(得分:5)

由于NULL是一个可以转换为ptr类型的变量,只需使用:{/ p>

sizeof *(ptr)NULL

或者,您可以避免使用类型定义指针的丑陋做法,并且此问题完全消失。

答案 1 :(得分:4)

如果您有一个类型为ptr的变量,则可以取消引用它:

ptr v;
sizeof(*v)