结构体可以嵌套定义吗?结构体有大小吗?怎么测?
时间: 2024-05-04 08:18:43 浏览: 63
结构体可以嵌套定义,即一个结构体的成员可以是另一个结构体类型的变量。例如:
```c
struct person {
char name[50];
int age;
struct address {
char street[50];
char city[50];
char state[50];
char zip[10];
} addr;
};
```
这里,`person` 结构体中的 `addr` 成员是一个嵌套的 `address` 结构体。
结构体有大小,它的大小取决于它的成员变量的大小和内存对齐规则。可以使用 `sizeof` 运算符来获取结构体的大小。例如:
```c
#include <stdio.h>
struct person {
char name[50];
int age;
struct address {
char street[50];
char city[50];
char state[50];
char zip[10];
} addr;
};
int main() {
struct person p;
printf("Size of person struct: %lu\n", sizeof(p));
return 0;
}
```
输出结果为:
```
Size of person struct: 214
```
这里使用 `%lu` 格式符打印 `sizeof` 的结果,因为 `sizeof` 返回的是一个 `size_t` 类型的值。
需要注意的是,结构体的大小可能会受到编译器的优化影响,所以在实际应用中,如果需要精确控制结构体的大小,可能需要使用特定的编译选项或者手动进行内存对齐。
阅读全文