使用C语言编写一个关于结构的示例程序

1. 简介

在C语言中,结构是一种用户自定义的数据类型,它可以包含多个不同类型的数据成员,这些成员可以是对应基本数据类型的变量,也可以是其他结构类型的变量。结构类型定义了一组相关数据的结构,可以通过定义结构变量来使用这些数据。结构在程序设计中起着非常重要的作用,可以让程序更加模块化和可维护。

2. 结构定义及访问

结构可以通过关键字“struct”定义,定义结构的一般形式如下:

struct struct_name {

member_type1 member_name1;

member_type2 member_name2;

member_type3 member_name3;

...

};

其中,struct_name是结构类型的名称,member_type是结构成员的类型,member_name是结构成员的名称。例如,下面的代码定义了一个名为“Person”的结构,包含了三个成员变量:

struct Person {

char name[20];

int age;

float weight;

};

可以在主函数中定义结构变量并进行访问:

#include

struct Person {

char name[20];

int age;

float weight;

};

int main()

{

struct Person p1 = {"Tom", 20, 60.5};

printf("Name: %s\n", p1.name);

printf("Age: %d\n", p1.age);

printf("Weight: %f\n", p1.weight);

return 0;

}

运行结果为:

Name: Tom

Age: 20

Weight: 60.500000

这里定义了一个名为“p1”的结构变量,使用“{}”初始化结构成员的值。然后通过“.”运算符访问结构成员的值,输出“p1”的属性信息。

2.1 结构嵌套

结构可以包含其他结构作为其成员,这种结构嵌套可以更好地组织数据:

struct Date {

int year;

int month;

int day;

};

struct Student {

char name[20];

int age;

float height;

struct Date birthday; // 嵌套Date结构

};

这里定义了一个“Date”结构来记录日期信息,然后在“Student”结构中嵌套了“Date”结构。这样就可以通过“Student”结构来记录学生的生日信息。

可以通过以下代码访问嵌套在结构中的成员:

#include

struct Date {

int year;

int month;

int day;

};

struct Student {

char name[20];

int age;

float height;

struct Date birthday; // 嵌套Date结构

};

int main()

{

struct Student s1 = {"Tom", 20, 181.5, {2000, 6, 20}};

printf("Name: %s\n", s1.name);

printf("Age: %d\n", s1.age);

printf("Height: %f\n", s1.height);

printf("Birthday: %d/%d/%d\n", s1.birthday.year, s1.birthday.month, s1.birthday.day);

return 0;

}

输出结果为:

Name: Tom

Age: 20

Height: 181.500000

Birthday: 2000/6/20

3. 结构指针

结构指针是指向结构的指针变量,通过结构指针可以方便地访问结构的成员。

声明结构指针有如下两种方式:

struct struct_name *ptr;

// 或者

typedef struct struct_name {

...

} *struct_ptr;

其中,第一种方式是直接在定义指针变量时声明其类型为结构指针,第二种方式是使用typedef定义一个结构类型的别名,并在定义指针变量时用别名代替真实类型名。

可以通过以下代码演示结构指针的使用:

#include

struct Student {

char name[20];

int age;

float height;

};

int main()

{

struct Student s1 = {"Tom", 20, 181.5};

struct Student *ptr_s = &s1;

printf("Name: %s\n", ptr_s->name);

printf("Age: %d\n", ptr_s->age);

printf("Height: %f\n", ptr_s->height);

return 0;

}

这里先定义了一个“Student”结构变量s1,并通过“&”取得其地址,存储在结构指针变量“ptr_s”中。然后通过“->”运算符访问结构指针中的成员变量。

输出结果为:

Name: Tom

Age: 20

Height: 181.500000

4. 结构数组

结构数组是一种包含多个结构变量的数组。可以通过以下方式定义结构数组:

struct struct_name array_name[N];

其中,N表示结构数组的长度,struct_name是结构类型的名称,array_name是结构数组的名称。例如:

struct Student {

char name[20];

int age;

float height;

};

struct Student class[3];

这里定义了一个名为“class”的结构数组,长度为3,存储了三个学生的信息。

可以通过以下代码访问结构数组中的元素:

#include

struct Student {

char name[20];

int age;

float height;

};

int main()

{

struct Student class[3] = {

{"Tom", 18, 180.5},

{"Lucy", 19, 170.0},

{"Jack", 20, 175.5}

};

for(int i=0; i<3; i++) {

printf("Name: %s\n", class[i].name);

printf("Age: %d\n", class[i].age);

printf("Height: %f\n", class[i].height);

printf("\n");

}

return 0;

}

这里使用了循环输出结构数组中的每个学生信息。输出结果为:

Name: Tom

Age: 18

Height: 180.500000

Name: Lucy

Age: 19

Height: 170.000000

Name: Jack

Age: 20

Height: 175.500000

5. 总结

结构是C语言中非常重要的数据类型之一,通过结构可以方便地组织数据,更加模块化和可维护。本文介绍了结构的定义和访问方式,结构嵌套、结构指针和结构数组等重要知识点。掌握了这些知识后,可以更好地利用结构来组织程序中的数据,使程序更加高效和易于维护。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签