结构体是C语言中一种复合的数据类型,它可以包含多个不同类型的数据成员,这些成员会按照定义的顺序在内存中连续分布。结构体的定义形式通常如下:
struct Student {
char name[20];
int age;
float score;
};
我们可以通过定义结构体变量来使用它。
结构体变量的地址指的是结构体变量所在的内存块的首地址。在C语言中,我们可以使用&运算符来获取一个变量的地址:
struct Student s;
printf("address of s: %p", &s);
上面的代码可以输出结构体变量s的地址。
结构体成员的地址指的是该成员在结构体变量中的偏移地址,可以通过成员运算符.来获取结构体成员的地址:
struct Student s;
printf("address of name: %p", &s.name);
printf("address of age: %p", &s.age);
printf("address of score: %p", &s.score);
上面的代码可以分别输出结构体成员name、age和score的地址。
根据上述的定义和说明,我们可以得出结论:结构体只有在定义结构体变量或者使用结构体成员时才会有地址,因为结构体本身并不占用内存空间。