6.3.1传址调用 任务6.2由于老师的疏忽导致某同学的成绩录入错误,请设计 一个函数实现成绩修改功能。 算法分析: 传值调用是一种单向传递,即形参不能改变 实参。但在程序设计中很多时候我们希望在被调 函数中对形参的处理结果能返回供主调函数使用, 比如此任务中修改后的成绩也应该可供主调函数 使用,这样就需实现双向传递,使形参能直接改 变实参的值。为了实现这个目的,通常使用传地 址调用
6.3.1 传址调用 任务6.2 由于老师的疏忽导致某同学的成绩录入错误,请设计 一个函数实现成绩修改功能。 算法分析: 传值调用是一种单向传递,即形参不能改变 实参。但在程序设计中很多时候我们希望在被调 函数中对形参的处理结果能返回供主调函数使用, 比如此任务中修改后的成绩也应该可供主调函数 使用,这样就需实现双向传递,使形参能直接改 变实参的值。为了实现这个目的,通常使用传地 址调用
6.3.1传址调用 例6.2成绩修改程序:62.cpp void update Score(StudentPick *pick do 函数形参 cuut《<"平时成绩("<φpick-> peacetime cin>>pick->peacetime Score if(pick->peacetime Score 0) cUut<<"平时成绩不能为负!“<end1; While(pick->peacetimeScore 6); 。。0。。。 主函数调用语句 函数实参 updateScore(&stuPick); 当发生函数调用时,将主调函数中实参 stuPick的地址传递给被 调函数的形参指针变量pick,这样就使得形参指针变量pick指向了实 参变量 stuPick。在被调函数中对形参指针变量pick所指向的数据进 行修改,实际上就是对实参变量 stuPick进行了修改。 采用传址调用实现了主调函数和被调函数间信息的双向传递
6.3.1 传址调用 例6.2 成绩修改 程序:6_2.cpp 当发生函数调用时,将主调函数中实参stuPick的地址传递给被 调函数的形参指针变量pick,这样就使得形参指针变量pick指向了实 参变量stuPick。在被调函数中对形参指针变量pick所指向的数据进 行修改,实际上就是对实参变量stuPick进行了修改。 主函数调用语句 函数实参 函数形参 采用传址调用实现了主调函数和被调函数间信息的双向传递
6.3.1传引用调用 void updateScore( StudentPick&pick)∥/修改成绩,注意这里在变量名前加上了& cuut《"平时成绩("<pick. peacetime Score<"):\t"; cin>>pick peacetime Score; if(pick peacetime Score 5) cut<<"平时成绩不能为负!“<endl; While(pick. peacetimescore 6): 与传值调用的形参列表相比,此函数只是在变量名前加 了&符号,这样的参数定义,就说明了变量pick将以传引用的 方式进行传递。对此函数的调用与传值时一样,也是使用 updateScore( stupick);。实际上在进行函数调用时,C语言会 将函数形参pick将与调用它的main函数中 stuPick看作相同的 个结构体变量,只是在 updateScore内部为 stuPick取了一个 别名pick而已。因此在 updateScore内对pick的任何修改就是 对 stuPick这一变量的修改。 注意:传引用调用是C++的一种参数传递方式
6.3.1 传引用调用 与传值调用的形参列表相比,此函数只是在变量名前加上 了&符号,这样的参数定义,就说明了变量pick将以传引用的 方式进行传递。对此函数的调用与传值时一样,也是使用 updateScore(stuPick);。实际上在进行函数调用时,C语言会 将函数形参pick将与调用它的main函数中stuPick看作相同的 一个结构体变量,只是在updateScore内部为stuPick取了一个 别名pick而已。因此在updateScore内对pick的任何修改就是 对stuPick这一变量的修改。 注意:传引用调用是C++的一种参数传递方式
6.3.2函数返回值 任务6.3教务老师需要了解某学生的详细信息,请设计一个函 数实现根据学号查找学生编号的功能。 算法分析: 在函数被调用时,很多时候我们需要被调函 数返回一些信息供主调函数使用,比如在此任务 中,主调函数需要被调函数告诉它所查到的学生 的编号,这时就需要用到函数的返回值。 本任务中我们不知道学号是否已经排序,所 以使用顺序查找法进行查找
6.3.2 函数返回值 任务6.3 教务老师需要了解某学生的详细信息,请设计一个函 数实现根据学号查找学生编号的功能。 算法分析: 在函数被调用时,很多时候我们需要被调函 数返回一些信息供主调函数使用,比如在此任务 中,主调函数需要被调函数告诉它所查到的学生 的编号,这时就需要用到函数的返回值。 本任务中我们不知道学号是否已经排序,所 以使用顺序查找法进行查找
6.3.2函数返回值 例6.3根据学号查找学生编号程序:63cpp struct studentlist /学生信息表结构体类型 StudentInfo data[MAX SIZE] /存储学生信息的数组 int length; int searchstudentBy No(StudentList stuList, char no[]) int n= styListlength; /表长 int i =5 /待查找下标 strcpy(stuListdata[s].no, no) /设置监视哨 for(i=n; strcmp( stylist. data[i]n,n)!=日;i-);〃/顺序查 return i /返回查找结果 函数的返回值是通过函数中的 return语句获得的。 return 语句只能位于函数体内,它使函数调用结束,并把被调用函数 内的一个确定的值作为函数的值带回给主调函数。本例使用 return i;将查到的学生下标i返回给主调函数
6.3.2 函数返回值 例6.3 根据学号查找学生编号 程序:6_3.cpp 函数的返回值是通过函数中的return语句获得的。return 语句只能位于函数体内,它使函数调用结束,并把被调用函数 内的一个确定的值作为函数的值带回给主调函数。本例使用 return i;将查到的学生下标i返回给主调函数