C语言程序设计(第7章结构体与共用体)3

C语言程序设计(第7章结构体与共用体)3,第1张

C语言程序设计(第7章结构体与共用体)3,第2张

7.3结构指针的定义和引用
指针变量非常灵活方便,可以指向任何类型的变量。如果指针变量被定义为指向结构类型变量,则可以通过指针引用结构类型变量。

7.3.1指向结构类型的变量的使用
首先我们来定义一下结构:
structstu
{
charname[20];
长号码;
浮动分数【例7-2】正确使用指向结构类型的变量。输入结构类型变量的成员并输出。
#include /*使用malloc()需要*/
struct data /*来定义结构*/
{
int day,month,year
};
struct stu /*定义结构*/
{
char name[20];
long num;
结构数据生日;/*嵌套结构类型成员*/
};
main() /*定义main()函数*/
{
struct stu * student;/*定义结构类型指针*/
Student = malloc(sizeof(struct stu));/*给指针变量*/
printf("输入姓名,数字,年,月,日:\ n ");
scanf("%s ",学生->姓名);/*输入学生的姓名、学号、出生日期*/
scanf ("%ld ",& student-> num);
scanf("%d %d %d ",&student->生日.年,&student->生日.月,&student->生日.日);
printf(" \ n输出名称,数字,年,月,日\ n ");
/*打印出每个成员项的值*/
printf(" % 20s % 10LD % 10d//% d/% d \ n ",student-> name,student-> num,student-> birthday.year,student。
}
在程序中,使用结构类型指针引用结构变量的成员需要通过c提供的函数malloc()给指针分配一个安全地址,sizeof()函数的返回值是计算给定数据类型占用内存的字节数。指针以
学生->姓名
学生->编号
学生->生日.年份
学生->生日.月
学生->生日.日[运行程序:
输入姓名、编号、年、月、日:
王剑34 1987年5月23日
王剑34 1987年//5//23;
};
然后定义指向结构类型变量的指针变量:
struct stu *p1,* p2
定义指针变量p 1和p 2,分别指向结构类型变量。引用形式为:指针变量→成员;

[4]

7.3.2使用指向数组结构类型的指针
定义一个数组结构类型,其数组名是数组的第一个地址。这在之前的课程中已经介绍得很清楚了。定义结构类型的指针可以指向数组的元素,也可以指向数组的元素,所以在使用时要加以区分。

【例7-3】例7-2中定义了结构类型,然后根据这个类型定义了结构数组和指向结构类型的指针。
结构数据
{
int日、月、年;
};
struct stu /*定义结构*/
{
char name[20];
long num;
结构数据生日;/*嵌套结构类型成员*/
};
struct stu student[4],* p;/*将结构数组和指向结构类型的指针*/
定义为p = student,然后指针p指向结构数组student。
p是指向一维结构数组的指针。有三种方法可以引用数组的元素。
1) Address方法
student+i和p+i都表示数组第I个元素的地址。数组元素每个成员的引用形式是:
(student+i)-> name,(student+i)->num和(p+i)->name,。Student+i和p+i与&student[i]含义相同。
2)指针方法
如果p指向数组的一个元素,那么p++指向它的后续元素。
3)指针的数组表示
如果p=student,我们说指针p指向数组student,p[i]表示数组的第I个元素,与student[i]作用相同。对数组成员的引用描述为:p[i]。姓名,p[i]。num等。

[例7-4]使用指向结构数组的指针变量。
struct data /*定义结构类型*/
{
int day,month,year。
};
struct stu /*定义结构类型*/
{
char name[20];

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言程序设计(第7章结构体与共用体)3

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情