有关函数返回地址的问题!
发布网友
发布时间:2022-05-05 07:59
我来回答
共2个回答
热心网友
时间:2023-07-19 23:02
请问i的赋值是函数A返回后才进行的吗?——是的
函数A的返回地址是return 0的地址,还是i=A(4)的地址?——是i=A(4)的地址
每条指令都有个地址,你说的返回地址,是指i=A(4)这条语句的地址。
简单给你解释一下,当执行到i=A(4)的时候, 编译器检测到需要先执行A(4),这时候会跳到A()这个函数的代码,那怎么知道执行完A之后,继续回到i=A(4)呢?这时候就需要保存i=A(4)的返回地址,这样编译器就知道执行完A之后需要继续执行的代码在哪里了。
热心网友
时间:2023-07-19 23:03
你说的 返回地址的定义 那段文章 适用于 fortran 语言。它谈的指令,是 从汇编语言角度看 的 指令。
c/c++语言里 函数分为 有返回值的函数和无返回值的函数,无返回值的函数 叫 void 型函数。void 型函数 与 fortran 的 subroutine (子程序) 有点像。
函数原型是 int A(int p); 调用 A(4) 返回 一个 int 型的数值,这个数值先 存放在 系统的一个地址中。 i=A(4); 然后把 返回的数值 赋给 变量 i。
return 0; 是主函数结束前的 一个语句,它是 主函数 的返回值计算,返回数值 0,这个0将用于 操作系统。这句语句与 函数A无关。
按语法,c语言里, i 是 变量的值,它的地址是 &i。