c 语言中的结构体数组
本教程介绍了如何在 c 语言中创建一个结构体数组,它是多个结构变量的集合,每个变量都包含了不同实体的信息。
c 语言中的结构体数组
数组是同一数据类型的顺序集合,结构体是用户定义的数据类型。结构体数组的声明与原始数据类型的数组相同,但使用结构体有其元素的数据类型。
考虑一个名为 student
的结构体的例子,如下所示。
struct student
{
int rollnumber;
char studentname[10];
float percentage;
};
我们可以像下面这样声明一个结构数组。
struct student studentrecord[5];
这里,studentrecord
是一个由 5 个元素组成的数组,其中每个元素的类型是 student
结构体。单个元素使用索引符号 []
访问,成员使用点 (.)
运算符访问。
studentrecord[0]
指向数组的 0th
元素,studentrecord[1]
指向数组的 1th
元素。
同理,
-
studentrecord[0].rollnumber
指的是数组第 0 个元素中的rollnumber
成员。 -
studentrecord[0].studentname
是指数组第 0 个元素中的studentname
成员。 -
studentrecord[0].percentage
是指数组第 0 个元素的percentage
成员。
在 c 语言中声明一个 struct
数组的完整程序如下。
#include #include struct student
{
int rollnumber;
char studentname[10];
float percentage;
};
int main(void)
{
int counter;
struct student studentrecord[5];
printf("enter records of 5 students");
for(counter=0; counter<5; counter)
{
printf("\nenter roll number:");
scanf("%d",&studentrecord[counter].rollnumber);
printf("\nenter name:");
scanf("%s",&studentrecord[counter].studentname);
printf("\nenter percentage:");
scanf("%f",&studentrecord[counter].percentage);
}
printf("\nstudent information list:");
for(counter=0; counter<5; counter)
{
printf("\nroll number:%d\t name:%s\t percentage :%f\n",
studentrecord[counter].rollnumber,studentrecord[counter].studentname, studentrecord[counter].percentage);
}
return 0;
}
输出:
enter record of 5 students
enter roll number:1
enter name: john
enter percentage: 78
enter roll number:2
enter name: nick
enter percentage: 84
enter roll number:3
enter name: jenny
enter percentage: 56
enter roll number:4
enter name: jack
enter percentage: 77
enter roll number:5
enter name: peter
enter percentage: 76
student information list
roll number: 1 name: john percentage:78.000000
roll number: 2 name: nick percentage:84.000000
roll number: 3 name: jenny percentage:56.000000
roll number: 4 name: jack percentage:77.000000
roll number: 5 name: peter percentage:76.000000
使用 c 语言中的 malloc()
函数创建一个 struct
数组
在 c 语言中,还有另一种方法可以制作 struct
数组,可以使用 malloc()
函数为 struct
数组分配内存。这就是所谓的动态内存分配。
malloc()
(内存分配)函数用于动态分配一个大块的指定大小的内存。这个函数返回一个类型为 void
的指针。
返回的指针可以被转换为任何形式的指针。它用默认的垃圾值初始化每个块。
malloc()
函数的语法如下。
ptrvariable = (cast-type*) malloc(byte-size)
动态创建一个结构体数组的完整程序如下。
#include int main(int argc, char** argv)
{
typedef struct
{
char* firstname;
char* lastname;
int rollnumber;
} student;
int numstudents=2;
int x;
student* students = malloc(numstudents * sizeof *students);
for (x = 0; x < numstudents; x)
{
students[x].firstname=(char*)malloc(sizeof(char*));
printf("enter first name :");
scanf("%s",students[x].firstname);
students[x].lastname=(char*)malloc(sizeof(char*));
printf("enter last name :");
scanf("%s",students[x].lastname);
printf("enter roll number :");
scanf("%d",&students[x].rollnumber);
}
for (x = 0; x < numstudents; x)
printf("first name: %s, last name: %s, roll number: %d\n",students[x].firstname,students[x].lastname,students[x].rollnumber);
return (0);
}
输出:
enter first name:john
enter last name: williams
enter roll number:1
enter first name:jenny
enter last name: thomas
enter roll number:2
first name: john last name: williams roll number:1
first name: jenny last name: thomas roll number:2
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
在c中将整数转换为字符
发布时间:2024/01/03 浏览次数:131 分类:c语言
-
本教程介绍了在c中将整数转换为字符的不同方法。在c编程语言中,将整数转换为字符在各种情况下都很重要。在c中,字符是以ascii值表示的,因此转换过程相对简单。
发布时间:2023/05/07 浏览次数:364 分类:c语言
-
本文介绍了如何在 c 语言中使用 typedef enum。使用 enum 在 c 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。
发布时间:2023/05/07 浏览次数:129 分类:c语言
-
本文演示了如何在 c 语言中使用前缀增量与后缀增量运算符。c 语言中 i 和 i 记号的主要区别
发布时间:2023/05/07 浏览次数:275 分类:c语言
-
本文演示了如何在 c 语言中获取当前工作目录。使用 getcwd 函数获取当前工作目录的方法
发布时间:2023/05/07 浏览次数:177 分类:c语言
-
本文介绍了如何在 c 语言中使用位掩码。使用 struct 关键字在 c 语言中定义位掩码数据
发布时间:2023/05/07 浏览次数:212 分类:c语言
-
本文演示了如何在 c 语言中使用标准库排序函数。使用 qsort 函数对 c 语言中的整数数组进行排序
c 语言中的 extern 关键字
发布时间:2023/05/07 浏览次数:131 分类:c语言
-
本文介绍了如何在 c 语言中使用 extern 关键字。c 语言中使用 extern 关键字来声明一个在其他文件中定义的变量