声明了一个结构体变量,
无论是否初始化,它都要占用内存空间,空间大小为 sizeof(struct name);
如果只声明为一个结构指针,那么占用内存空间4字节。sizeof(struct name *);
只要你写了什么,都要占内存。如果你问的是编译后的情况,那是不占的。就像你包含了很多很多你的代码用不着的头文件,编译前这些文件都要打开;但编译后的目的码文件的大小却不因你多包含了头文件而增大。
会占用的,只要有变量了,就会申请相应的存储空间。除非只定义结构而没有实例变量定义,才不占内存。
经测试,声明一个结构体与否编译出来的二进制文件大小不会有变化,所以对于第一个问题是不会声明一个变量但不使用也会占用空间,不过不排除编译器会对此进行优化(例如直接抹掉未使用过的局部变量)
书上说,只定义不声明是不会占的,声明了会占的