我的代码如下所示:
#include <stdio.h>
typedef struct SomeStruct* ptr;
main(){
printf("%lu\n",sizeof(ptr));
}
给定代码将打印struct SomeStruct*
的大小。但是我想要sizeof(struct SomeStruct)
。如果我事先不知道结构的名称,有没有办法让我仍然找到ptr
指向的结构的大小?
答案 0 :(得分:5)
由于NULL
是一个可以转换为ptr
类型的变量,只需使用:{/ p>
sizeof *(ptr)NULL
或者,您可以避免使用类型定义指针的丑陋做法,并且此问题完全消失。
答案 1 :(得分:4)
如果您有一个类型为ptr
的变量,则可以取消引用它:
ptr v;
sizeof(*v)