本文是对C语言中结构指针的定义和引用的详细分析和介绍,供有需要的朋友参考。
指向结构体类型变量的使用首先我们来定义一下结构:struct stu { char name[20];长号码;浮动分数[4];} ;然后定义指向结构类型变量的指针变量:struct stu *p1,* p2定义指针变量p 1和p 2,分别指向结构类型变量。引用形式为:指针变量成员;[例7-2] 对指向结构体类型变量的正确使用。输入结构类型变量的成员并输出。复制代码如下:#include stdlib.h /*使用m a l l o c()需要* /struct data/*来定义结构* /{int day,month,year} ;Struct stu /*定义结构*/{ char name[20];长num结构数据生日;/embedded *结构类型成员集*/};Main() /*定义了Main()函数*/{ struct stu * student;Definite/*结构类型指针*/student=malloc(sizeof(struct stu));将安全地址*/printf('输入名称、数字、年、月、日:/n ')赋给/pointer变量。scanf('%s ',学生名称);输入/*学生的姓名、学号、出生日期*/scanf('%ld ',student-num);scanf('%d%d%d ',学生生日.年,学生生日.月,学生生日.日);printf('/nOutputname,number,year,month,day/n ');/*打印出每个成员项的值*/printf ('s LD d//%d/%d/n ',学生名,学生号,学生生日.年,学生生日.月,学生生日.日);}在程序中,使用结构类型指针引用结构变量的成员需要通过c提供的函数malloc()给指针分配一个安全地址,sizeof()函数的返回值是计算给定数据类型占用内存的字节数。指针所指成员的形式如下:copy code code如下:student-name student-numstudent-birthday . year student-birthday . month student-birthday .结构体类型数组指针的使用定义了一个结构体类型数组,其数组名是数组的第一个地址。这在之前的课程中已经介绍得很清楚了。定义结构类型的指针可以指向数组的元素,也可以指向数组的元素,所以在使用时要加以区分。[例7-3] 在例7 - 2中定义了结构体类型,根据此类型再定义结构体数组及指向结构体类型的指针。复制代码如下:struct data{intday,month,year};Struct stu/*定义结构*/{ char name[20];长num结构数据生日;/embedded *结构类型成员集*/};struct student[4],* p;将/*结构数组和指向结构类型*/的指针定义为p=student,然后指针p指向结构数组student。p是指向一维结构体数组的指针,对数组元素的引用可采用三种方法。1)地址方法学生I和p i都表示数组第I个元素的地址。数组元素每个成员的引用形式有:(学生i)-name,(学生i)-num和(p i)-name,(p i)-num等。学生I和p i的意思和学生[i]一样。2)指针法如果P指向数组的一个元素,那么P指向它的后续元素。3)指针的数组表示如果p=student,我们说指针p指向数组student,p[i]表示数组的第I个元素,与student[i]作用相同。对数组成员的引用描述为:p[i]。姓名,p[i]。num等。[例7-4]指向结构体数组的指针变量的使用。复制代码如下:structdata/*定义结构类型*/{intday,month,year};Structstu/*定义结构类型*/{ char name[20];长num结构数据生日;};main(){ inti;structstu*p,student[4]={{ '李颖',11978,5,23},{ '王萍',21979,3,14},{ '李波',31980,5,6},{ '徐焰',41980,4,21 } };/*定义一个结构数组并初始化*/p=student;/*将数组的首地址赋给指针P,指针指向一维数组Student */printf('/n1-output name,number,year,month,day/n ');for(I=0;i4;I )/*使用指针方法输出数组元素的每个成员*/printf(' s LD d/% d/% d/n ',(p I)-name,(p I)-num,(p I)-birthday.year,(p I)-birthday.month,(p }
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。