【C语言】结构体指针与结构体数组 |
您所在的位置:网站首页 › 结构体指针的调用 › 【C语言】结构体指针与结构体数组 |
目录
一、结构体指针 二、结构体数组 1.结构体数组的定义 2.结构体数组的初始化 3.结构体数组的引用 4.结构体数组指针 一、结构体指针与一般指针类似结构体也可以使用结构体指针进行引用使用。结构体指针的定义方式如下: struct Student stu = { 1001,"Li Lei",'M',1.87 }; //定义一个Student 的结构体变量stu struct Student *p=&stu; //定义一个Student的结构体指针变量来指向stu 当程序中定义了一个指向结构体变量的指针,就可以通过“指针名->成员变量名”的方式访问结构体变量的成员。 实例演示: #include typedef char NAME[10]; typedef double DOU; typedef struct Student { int num; NAME name; char sex; DOU height; }Stu; int main() { Stu stu = { 1001,"Li Lei",'M',1.87 }; Stu* p = &stu; printf("学生信息:\n"); printf("学号:%d\n", p->num); printf("姓名:%s\n", p->name); printf("性别:%c\n", p->sex); printf("年龄:%.2lf\n", p->height); }运行结果: 二、结构体数组 1.结构体数组的定义一个结构体变量只能存储一组信息,如果要存储大量的信息,则可以定义一个结构体数组进行存储。 定义结构体数组的方式有三种: ①先定义结构体类型,后定义结构体数组 struct Student { int num; char name[10]; char sex; double height; }; struct Student stus[20];②在定义结构体类型的同时定义结构体数组 struct Student { int num; char name[10]; char sex; double height; }stus[20];③直接定义结构体数组 struct { int num; char name[10]; char sex; double height; }stus[20]; 2.结构体数组的初始化结构体数组与一般数组类似,都通过为元素赋值的方式完成初始化。由于结构体数组中的每个元素都是一个结构体变量,因此,在为每个元素赋值时,需要将其成员的值依次放到一对大括号中。 结构体数组的初始化方式: ①先定义结构体类型,后定义并初始化结构体数组 struct Student { int num; char name[10]; char sex; double height; }; struct Student stu1[3] = { {1001,"Li Lei",'M',1.78}, {1002,"Li Hua",'M',1.87}, {1003,"Han Mei",'W',1.65} };②在定义结构体类型的同时定义结构体数组并初始化 struct Student { int num; char name[10]; char sex; double height; }stu1[3] = { {1001,"Li Lei",'M',1.78}, {1002,"Li Hua",'M',1.87}, {1003,"Han Mei",'W',1.65} };使用这种方式初始化结构体数组时,可以不指定结构体数组的长度,系统在编译时,会自动根据初始化的值决定结构体数组的长度。 3.结构体数组的引用结构体数组的引用是指对结构体数组元素的引用,由于每个结构体数组元素都是一个结构体变量,因此结构体数组元素的引用于结构体变量类似。 实例演示: #include struct Student { int num; char name[10]; char sex; double height; }; struct Student stus[3] = { {1001,"Li Lei",'M',1.78}, {1002,"Li Hua",'M',1.87}, {1003,"Han Mei",'W',1.65} }; int main() { for (int i = 0; i < 3; i++) { printf("学生%d的信息\n", i + 1); printf("学号:%d\n", stus[i].num); printf("姓名:%s\n", stus[i].name); printf("性别:%c\n", stus[i].sex); printf("身高:%.2lf\n", stus[i].height); printf("\n"); } }运行结果: 4.结构体数组指针指针可以指向结构体数组,即将结构体数组的起始地址赋给指针变量,这种指针就是结构体数组指针。 实例演示: #include struct Student { int num; char name[10]; char sex; double height; }; struct Student stus[3] = { {1001,"Li Lei",'M',1.78}, {1002,"Li Hua",'M',1.87}, {1003,"Han Mei",'W',1.65} }; int main() { struct Student* p=stus ;//定义结构体数组指针p指向结构体数组stus for (int i = 0; i < 3; i++) { printf("学生%d的信息\n", i + 1); printf("学号:%d\n", p->num); printf("姓名:%s\n", p->name); printf("性别:%c\n", p->sex); printf("身高:%.2lf\n", p->height); printf("\n"); p++; } }运行结果: 结构体数组指针从定义上看,它和结构体指针没什么区别,只不过指向的是结构体数组。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |