C语言函数调用机制与递归函数详解.pdfVIP

  • 2
  • 0
  • 约1.92千字
  • 约 6页
  • 2026-04-27 发布于江苏
  • 举报

函数执行流程

C语言中,函数的活动和栈有关。

栈是后进先出的数据结构。栈是由底端向顶端生长,栈顶加入数据称为压栈、入栈,栈顶弹出数据称为

出栈。

10

11

12

main调用,在栈顶创建栈帧

a=1,在main栈帧中增加a,堆里增加1,a指向这个1

b=add(a,2),等式右边先执行,add函数调用

add调用,在栈顶创建栈帧,压在main栈帧上面

add栈帧中增加2个变量,x变量指向1,y指向堆中新的对象2

在堆中保存计算结果3,并在add栈帧中增加r指向3

print函数创建栈帧,实参r被压入print的栈帧中

print函数执行完毕,函数返回,移除栈帧

add函数返回,移除栈帧

main栈帧中增加b指向add函数的返回值对象

main函数返回,移除栈帧

问题:如果再次调用main函数,和刚才的main函数调用,有什么关系?

每一次函数调用都会创建一个独立的栈帧入栈。

因此,可以得到这样一句确的话:哪怕是同一个函数两次调用,每一次调用都是独立的,这两次调

用没什么关系。

递归

函数直接或者间接调用自身就是递归

递归需要有边界条件、递归前进段、递归返回段

递归一定要有边界条件

文档评论(0)

1亿VIP精品文档

相关文档