还剩1页未读,继续阅读
文本内容:
第章函数进阶10第一单元学习指南本章教学目标:掌握如何用指针参数实现局部变量的跨函数间接引用,如何用数组名作实参实现局部数
1.组元素的跨函数间接引用,理解递归函数的调用与返回流程学会编写一般难度的跨函数间接引用及递归函数程序,并能上机调试运行
2.学习方法建议:.仔细阅读本章示例程序,正确理解每条语句的功能,着重理解如何利用指针形参、通1过跨函数间接引用在函数之间传递数据;着手编写一般难度的跨函数间接引用及递归函数程序上机调试运行本章示例程序,并调试运行自己编写的程序,进一步体会何时用普通形参
2.传递数据、何时用指针形参传递数据对于语法错误,采取与前面相同的应对措施着重检查实参与对应的指针形参的类型是
4.否一致对于逻辑错误,着重检查是否在应该使用指针形参时误用普通变量形参以及在应该使用
5.普通变量形参时误用指针形参仍然可以采用在程序中添加临时性输出语句的方法,进行出错位置的定位记录总结在调试程序的过程中发现的错误以及改正的方法,不断积累编写跨函数间接引
6.用及递归函数程序的直接经验第二单元重点与难点解析•何时需要使用指针参数?1当需要在被调函数中,对主调函数中定义的局部变量的值进行更改时,必须使用指针参数指针参数的功能是什么?
2.指针作为函数参数,实际上实现了局部变量的跨函数间接引用通常是在被调函数中间接引用主调函数中的局部变量,而极少会在主调函数中间接引用被调函数中的局部变量如何实现局部变量的跨函数间接引用?
3.()首先,将主调函数中定义的、需要在被调函数中进行更改的变量的地址作为实参1()然后,在被调函数中定义与地址实参的类型相一致的指针变量作为形参2最后,在被调函数中通过指针形参间接引用主调函数中对应的局部变量并进行更改3•何时使用普通变量作形参,何时使用指针变量作形参?4若在被调函数中,只是引用主调函数中某个变量的值,而并不需要更改该变量的值,则应该定义为普通形参若需要在被调函数中更改该变量的值,则必须以指针变量作为形参为什么在被调函数中更改主调函数中数组的值时,不需要将每个元素的地址都定义为实参
5.呢?这是因为一维数组的元素的地址是连续的,因此只要将主调函数中数组的首地址传递到被调函数中,即可求出其他元素的地址,故不需要将每个元素的地址都定义为实参为什么主调函数以数组名为实参调用被调函数时,还要将数组长度作为另一个单独的参数
6.呢?这是因为在主调函数中以一维数组名作为实参时,只是传递了数组的首地址,并不包含数组长度的信息因此,需要用另一个参数专门传递一维数组的长度为什么在有的程序中,并不需要在被调函数中更改主调函数中的数组元素的值,却仍然采用
7.数组元素的地址作为被调函数的实参呢?这是因为数组的元素数量较多,若将每个数组元素都定义为被调函数的参数,则导致程序繁琐反之,若将数组的首地址定义为实参,则程序更加简洁、通用,而且空间与时间占用较少因此,即使不需要在被调函数中更改主调函数中的数组元素的值,也仍然采用数组的首地址作为被调函数的实参为什么可以对形参数组名进行赋值?
8.从本质上来说,形参数组并不是数组,而是指针变量只是为了直观才表示成数组的形式,故其数组名可以赋值既然语言的参数都是单向传递的,为什么更改形参数组元素的值能够影响实参数组呢?从
9.C本质上来说,形参数组并不存在所谓形参数组的元素,不过是实参数组元素的间接引用形式;只是为了直观,才表示成数组元素的形式因此,更改形参数组元素的值,实际上就是更改了实参数组元素的值若希望在被调函数中间接引用主调函数中的二维数组的元素,应该以什么地址作为被调函*
10.数的实参呢?若要在被调函数中间接引用主调函数中的二维数组的元素,应该以二维数组的首地址作为被调函数的实参因为二维数组的首地址实际上是一个行指针,通过该行指针即可求出二维数组中每个元素的地址,进而对二维数组的元素进行间接引用当以二维数组的首地址作为被调函数的实参时,为什么通常还要以二维数组的行数作为另*
11.一个实参呢?这是因为二维数组的首地址实际上是一个行指针,在行指针中包含有二维数组列数的信息,但并不包含二维数组行数的信息若要在被调函数中,表示出二维数组中所有元素的地址,必须知道二维数组的首地址以及行数与列数因此,需要另外设置一个参数,用来传递二维数组的行数如何在被调函数中,间接引用主调函数中的二维数组的元素呢?*
12.首先在被调函数中定义两个形参,一个是行指针变量如用于接收二维数组的首地址,int*p[N]一个是整型变量用于接收二维数组的行数那么,±调函数中的二维数组中行列的元intmo ij素,可以在被调函数中表示为为了直观,也可以表示为二维数组元素形式的**p+i+j p[i][j]o为什么返回指针的函数不允许返回本函数中自动变量或数组的地址?
13.因为这种变量或数组的存储空间将在当前函数返回时被释放,从而导致该地址指向未分配的内存空间为什么指针可以指向函数呢?
14.因为程序运行时,一个函数的可执行代码是存储于内存中并占有一定内存单元的,所以让指针指向一个函数,实际上就是指向该函数所占内存区的首地址单元.指向函数的指针有何用途呢?15指向函数的指针最常见的用途,就是作为另一个函数的参数哪类问题适于用递归程序解决呢?
16.如果一个问题的解决可以分解为特殊与一般两种情况,其中特殊情况能够很容易解决,而一般情况可以转化为类似而更简单的问题,并最终转化为前边的特殊情况予以解决;那么,这个问题适合用递归程序解决如何编写递归函数?
17.一般采用选择结构实现,首先写出针对特殊情况的处理方式然后写出非特殊情况下,如何通过调用函数自身,完成相应的处理而这种反复调用,应最终转化为己定义好的特殊情况。
个人认证
优秀文档
获得点赞 0