下面先举例一段代码
struct people{
char sex;
char age;
}peo;
int main(void)
{
peo man1;
peo *man2;
}
/*用结构体指针变量访问结构体变量成员有两种方式: { (*man1).age;//一般没有人这么用;man2->age;//指针结构体访问结构体成员的方式; } */
在使用结构体的时候一般有两种形式:结构体变量和结构体指针;
{
peo man1;
peo *man2;
}
man1:/即为结构体变量。在结构体被定义的时候,就生成了一种数据类型,我们在使用的 时候只需要用这种数据类型定义你所需要的变量即可;/
*man2:/即为结构体指针。结构体指针的使用和普通指针的使用是一样的,结构体变量在定义的时候被分配了内存,而结构体指针在定义的时候并不会分配内存,需要我们在使用前自己申请,或者是让它指向某个地址;/
结构体变量成员的访问运算符为(.),如man1.age;这样就访问了结构体变量man1中的成员age;
结构体指针成员的访问运算符为(->),如man2->age;同样访问了结构体指针man2中的成员age;
如果需要取结构体变量或者结构体指针中成员的地址的话,就和一般变量的方式一样,只需要在其前加&;
PS:在我遇到取结构体指针成员地址的时候,我犹豫了,到底是&(man2->age)还是&man2->age;最后查了很久,才找到。这两个是一样的,因为->运算符的优先级高于&;