《(63)--9.4 结构体指针(一)C语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《(63)--9.4 结构体指针(一)C语言程序设计基础.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、9.4.1 引例引例9.4 结构体指构体指针(一一)修改学生成绩【引例9-3】输入n(n30)个学生的成绩信息,再输入一个学生的学号、课程以及成绩,在自定义函数中修改该学生指定课程的成绩。结构体指针(一)引例C语言如何在子函数中访问并修改主函数中的学生课程成绩?修改学修改学生成生成绩C语言#include struct student /*学生信息结构体定义*/int num;/*学号*/char name20;/*姓名*/int physical;/*三门课程成绩*/int math;int english;int sum;/*个人总分*/;int update_score(struct s
2、tudent*p,int n,int num,int course,int score);/*函数声明*/程序解析:程序解析:结构体指针(一)引例C语言int main(void)int course,i,n,num,pos,score;struct student students30;/*定义结构体数组*/*输入n个学生信息并求个人总分*/printf(Input n:);scanf(%d,&n);for(i=0;in;i+)printf(Input the info of No.%d:n,i+1);printf(number:);scanf(%d,&studentsi.num);prin
3、tf(name:);scanf(%s,studentsi.name);printf(physical score:);scanf(%d,&studentsi.physical);printf(math score:);scanf(%d,&studentsi.math);printf(english score:);scanf(%d,&studentsi.english);studentsi.sum=studentsi.math+studentsi.english+studentsi.physical;结构体指针(一)引例C语言/*输入待修改学生信息*/printf(Input the numb
4、er of updated student:);scanf(%d,&num);printf(Choice the course:1.physical 2.math 3.english:);scanf(%d,&course);printf(Input the new score:);scanf(%d,&score);/*调用函数,修改学生成绩*/pos=update_score(students,n,num,course,score);/*输出修改后的学生信息*/if(pos=-1)printf(Not found!n);else printf(After update:n);printf(nu
5、mbert physicalt matht englishn);printf(%dt%dt%dt%dn,studentspos.num,studentspos.physical,studentspos.math,studentspos.english);return 0;结构体指针(一)引例C语言/*自定义函数,修改学生成绩*/int update_score(struct student*p,int n,int num,int course,int score)int i,pos;for(i=0;inum=num)break;if(iphysical=score;break;case 2:p
6、-math=score;break;case 3:p-english=score;break;pos=i;/*被修改学生在数组中的下标*/else /*无此学号*/pos=-1;return pos;结构体指针(一)引例C语言引例:修改学生成绩 程序解析9.4.2 结构体指构体指针的概念与使用的概念与使用9.4 结构体指构体指针(一一)1.结构体指针的概念结构体指针(一)结构体指针的概念与使用C语言指向指向结构体构体变量的指量的指针称称为结构体指构体指针。2.结构体指针的定义定义形式:定义形式:structstruct 结构体名结构体名 *结构体指针名结构体指针名;存放结构体变量在内存的起始地
7、址存放结构体变量在内存的起始地址示例示例1:struct student*p;3.结构体指针的初始化C语言格式格式:struct struct 结构体名结构体名 *结构体指针结构体指针名名=结构体结构体地址地址;示例示例2:struct student int num;char name20;int physical,math,english;int sum;stu=101,zhang,90,95,90;struct student *p=&stu;101zhang9095stup90结构体指针(一)结构体指针的概念与使用4.使用结构体指针变量引用成员C语言格式:格式:(*结构体结构体指针指针
8、变量变量名名).).结构体成员名结构体成员名(1)用间接访问运算符“*”访问结构体成员示例示例3:(*p).num=101;*p一定要使用括号,因为点运算符的优先级高,如果不使用括号,就会执行点运算然后是*运算。结构体指针(一)结构体指针的概念与使用4.使用结构体指针变量引用成员C语言(2)用指向运算符“-”访问指针指向的结构体成员格式格式:结构体指针结构体指针变量变量名名-结构体成员名结构体成员名指向运算符优先级:1结合方向:从左向右示例示例4:p-num=101;(1)pStruct-iGrade,表示指向的结构体变量中成员iGrade的值。(2)pStruct-iGrade+,表示指向的
9、结构体变量中成员iGrade的值,使用后该值加1。(3)+pStruct-iGrade,表示指向的结构体变量中成员iGrade的值加1,计算后再进行使用。结构体指针(一)结构体指针的概念与使用4.使用结构体指针变量引用成员C语言示例示例5:struct student int num;char name20;int physical,math,english;int sum;s1=102,zhang,90,95,90;struct student *p=&s1;下面下面三条三条语句等价:语句等价:s1.num=101;(*p).num=101;p-num=101;90101zhang9095s1p90102zhang9095s1p结构体指针(一)结构体指针的概念与使用1.结构体指构体指针的概念与使用的概念与使用结构体指针的概念、定义、初始化结构体指针的使用