我尝试了以下程序
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而不会意识到进一步向下,您正在采用结构的大小.如果你没有冗余地指定类型,那么如果你以后需要更改它,你就不太可能搞砸它.
从这个意义上说,它是那些"可维护性代码"或"代码防御性"类型的东西之一.
其他人可能有其主观原因.输入的字符通常较少.:-)