Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的代码如下所示:
#include <stdio.h> typedef struct SomeStruct* ptr; main(){ printf("%lu\n",sizeof(ptr)); }
给定的代码将打印struct SomeStruct*. 不过我想要sizeof(struct SomeStruct)。如果我事先不知道结构的名称,有没有办法让我仍然找到指向的结构的大小ptr?
struct SomeStruct*
sizeof(struct SomeStruct)
ptr
如果你有一个 type 的变量ptr,你可以取消引用它:
ptr v; sizeof(*v)
由于NULL是一个可以转换为 type 的变量,因此ptr只需使用它:
NULL
sizeof *(ptr)NULL
或者,您可以避免 typedef-ing 指针的丑陋做法,这个问题完全消失了。