sizeof(*ptr)和sizeof(struct)之间的区别

Leo*_*ssi 4 c sizeof

我尝试了以下程序

struct temp{
   int ab;
   int cd;
};

int main(int argc, char **argv)
{
   struct temp *ptr1;
   printf("Sizeof(struct temp)= %d\n", sizeof(struct temp));
   printf("Sizeof(*ptr1)= %d\n", sizeof(*ptr1));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量

Sizeof(struct temp)= 8
Sizeof(*ptr1)= 8
Run Code Online (Sandbox Code Playgroud)

在Linux中,我在很多地方都观察到了它的用法sizeof(*pointer).如果两者相同,为什么sizeof(*pointer)用?

asv*_*kau 13

我通常更喜欢sizeof(*ptr)因为如果你以后回去更改你的代码,ptr现在有不同的类型,你不必更新sizeof.在实践中,您可以更改类型,ptr而不会意识到进一步向下,您正在采用结构的大小.如果你没有冗余地指定类型,那么如果你以后需要更改它,你就不太可能搞砸它.

从这个意义上说,它是那些"可维护性代码"或"代码防御性"类型的东西之一.

其他人可能有其主观原因.输入的字符通常较少.:-)