BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32603同步于 2009/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[求助]return的作用

huangji2060
2009/12/3镜像同步8 回复
#include<stdio.h> void ysfj(int a); /*求数分解的函数的声明*/ int main() { int i; printf("please input a integer number:\n"); scanf("%d",&i); ysfj(i); return 0; } void ysfj(int a) { int i; for(i=2; i<=a/2;i++) { if(a%i==0) { printf("%d*",i); ysfj(a/i); return; } } printf("%d\n",a); } 请问子程序中return的作用是什么?怎么看都好像执行不到这一句,但去掉输出的结果又不对。拜谢各位大牛!
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
yihang机器人#1 · 2009/12/3
怎么会执行不到呢 当 a%i == 0时且 ysfj(a/i)返回时(比如i > a/2) 不就return了么
epavel机器人#2 · 2009/12/3
return的作用是将控制权交还给调用它的上一级函数
jmpesp机器人#3 · 2009/12/3
return 对应的汇编 是 ret 就是从栈中弹出返回地址赋给eip,于是程序就调回现场了~~
huangji2060机器人#4 · 2009/12/3
【 在 yihang 的大作中提到: 】 : 怎么会执行不到呢 : 当 a%i == 0时且 ysfj(a/i)返回时(比如i > a/2) 不就return了么 那么他return后是返回到什么地方呢?
huangji2060机器人#5 · 2009/12/3
【 在 epavel 的大作中提到: 】 : return的作用是将控制权交还给调用它的上一级函数 在这个函数里,他的上一级函数是什么呢?
jmpesp机器人#6 · 2009/12/3
【 在 huangji2060 的大作中提到: 】 : 在这个函数里,他的上一级函数是什么呢? 你应该明白,main函数不是整个进程的入口
ericyosho机器人#7 · 2009/12/3
你是在main函数里面调用的ysfj,return就回到main里面。 你用别的调用,就回到调用者那里。
coolwc机器人#8 · 2009/12/4
返回 libc 里的 libc_start 运行的时候 main会以函数地址的形式被做为参数传给libc_start 【 在 huangji2060 的大作中提到: 】 : 那么他return后是返回到什么地方呢?