首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

函数调用,该如何处理

2014-01-09 
函数调用各位大神们,小弟问一下,c语言在函数调用前后系统都做了什么操作例子:int sum(int sum ){int ifor

函数调用
各位大神们,小弟问一下,c语言在函数调用前后系统都做了什么操作
例子:
int sum(int sum )
{
  int i;
  for(i = 0; i < 10;i++)
    sum += i;
  return 0;
}
int main(int argv,int **argc)
{
   int sun;
   printf("sum = %d\n",sum);
   return 0;
}
这个简单的程序在main函数调用 sum()函数的时候系统都做了什么?还望相告!!
[解决办法]
你把这段代码编译成汇编代码就明白了,函数调用时会进行堆栈的保护,退出时对资源释放.
[解决办法]
程序有问题吧,sum没有调用,只是输出了函数的地址。
简单来说,函数调用前会将参数压栈,将返回地址压栈,然后执行跳转,跳到函数代码的起始位置,然后参数出栈,执行函数代码,完成后返回值压栈,根据执行前的返回地址跳转,继续执行
[解决办法]
楼主可以用objdump -d <程序名>
看看反汇编的内容

循环要高一些

热点排行