C语言结构教学
三.结构排列和结构指针
结构是一种新的数据类型,可以具有结构数组和结构指针。
1 .结构排列
结构数组是具有相同结构类型的变量的集合。 要定义班上40名同学的姓名、性别、年龄和地址,可以将其定义为结构数组。 如下:
结构
{
char name[8];
char sex[4];
int age;
char addr[40];
}student[40];
也可以定义为:
结构字符串
{
char name[8];
char sex[4];
int age;
char addr[40];
(;
struct string student[40];
另外,对结构数组成员的访问将数组元素作为结构变量,其形式为:
结构数组元素.成员名称
例如:
student[0].name
student[30].age
实际上,结构数组相当于二维结构,第一维是结构数组元素,各元素是结构变量,第二维是结构成员。
注意:
结构数组的成员也可以是数组变量。
例如:
struct a
{
int m[3][5];
float f;
char s[20];
(y ) 4;
为了访问结构a中结构变量y[2]的该变量,可写为y[2].m[1][4]
2 .结构指南
结构指针是指向结构的指针。 它由附加在结构变量名之前的*操作符定义。 例如,如果在前面介绍的结构中定义结构指针,则为:
结构字符串
{
char name[8];
char sex[4];
int age;
char addr[40];
}*student;
也可以省略结构指针名称,只描述结构,然后使用以下语句定义结构指针:
struct string *student;
使用结构指针访问结构成员与访问结构变量的结构成员的表达方式不同。 结构指针对结构成员的访问表示为:
结构指针名称-结构成员
其中-是两个符号-和的组合,箭头似乎指向结构成员。 例如,要在上面定义的结构中为name和age赋值,请使用以下语句:
strcpy(student-name,Lu G.C );
student-age=18;
实际上,*student-name是(student ).name的.缩写。
请注意,使用之前必须初始化结构指针,因为结构指针是指向结构的指针,并且是结构的第一个成员的起始地址。 这意味着必须分配整个结构长度的字节空间。 可以通过以下函数完成此操作: 另外,在上述例子中,对以下的:进行了说明
sudent=(structstring* ) malloc ) sizeof ) structstring );
sizeof(structstring )自动求出string结构体的字节长,malloc )函数定义结构体长度的存储器区域,将其冒充地址作为结构体指针返回。
注意:
1 .由于结构用作数据类型,因此根据定义的位置,定义的结构变量或结构指针变量也同样包括局部变量和全局变量。
2 .结构变量名不是指向其结构的地址,而是与数组名称的含义不同,因此根据需要,结构中第一个成员的起始地址必须为[结构变量名]。
3 .结构复杂形式:嵌套结构
嵌套结构意味着一个结构成员可以包含其他结构,turbo c允许此嵌套。
例如,下面有嵌套结构
结构字符串
{
char name[8];
int age;
结构地址;
} student;
其中: addr是另一种结构的结构名称,必须先进行,说明即
结构地址
{
char city[20];
无符号密码;
char tel[14];
}
如果要为作为student结构成员的address结构的zipcode赋值,则可以写入:
student.address.zipcode=200001;
每个结构成员名称从最外层到最内层各列出一个。 这意味着嵌套结构成员的表示方式为:
结构变量名称.嵌套结构变量名称.结构成员名称
其中,嵌套结构可以很多,结构成员名称是最内层结构中非结构的成员名称。
【c语言结构教程】相关文章: