【文件属性】:
文件名称:结构体指针-复高斯分布的数学基础理论
文件大小:6.48MB
文件格式:PDF
更新时间:2021-06-08 13:20:35
嵌入式 Linux C
(2)结构体指针
结构体指针是指向结构体的指针。它由一个加在结构体变量名前的“*”操作符来定义,
例如用前面已说明的结构体定义一个结构体指针如下:
struct string{
char name[8];
char sex[2];
int age;
char addr[40];
}*student;
当然也可省略结构体指针名,只作结构体说明,然后再用下面的语句定义结构体指针。
struct string *student;
使用结构体指针对结构体成员的访问,与结构体变量对结构体成员的访问在表达方式上
有所不同。结构体指针对结构体成员的访问表示为:
结构体指针名->结构体成员
例如:
student->name
实际上,student->name 就是(*student).name 的缩写形式。
需要指出的是结构体指针是指向结构体的一个指针,即结构体中第一个成员的首地址,
因此在使用之前应该对结构体指针初始化,即分配整个结构体长度的字节空间,这可用下面
函数完成,仍以上例来说明如下:
student=(struct string*)malloc(size of (struct string));
注意
结构体变量名不是指向该结构体的地址,这与数组名的含义不同,结构体中第一个成员的首地
址是&[结构体变量名]。
4.结构体嵌套
嵌套结构体是指在一个结构体成员中可以包括其他一个结构体,C 语言中允许这种嵌套。
例如:下面是一个有嵌套的结构体。
struct string{
char name[8];
int age;
struct addr address;
}student;
其中,addr 为另一个结构体的结构体名,但必须在使用该结构体之前要先进行说明,即:
struct addr{
char city[20];
unsigned lon zipcode;
char tel[14];
};
如果要给 student 结构体中成员 address 结构体中的 zipcode 赋值,则可写成:
student.address.zipcode=200001;