导航

C语言中的函数及变量

Posted on 2011-12-18 20:38  网名还没想好  阅读(293)  评论(0编辑  收藏  举报

       函数的本质是一段二进制代码,这些代码是可以直接被机器执行的指令。在翻译为汇编语言时,函数被翻译成一段相对独立的代码,并且使用函数名作为编号,表示此段代码的入口。当程序调用该函数时,只需要转到该入口就可以了。因此函数名的值等于内存中存储该代码段的首地址

   函数在调用时会使进程空间中的栈不断增长,从当前进程空间中的栈顶的位置到函数保存返回地址的位置,这块内存称为函数的栈帧,所有函数的局部变量都保存在栈帧上,当函数结束调用时这块栈真就消失了,全局变量保存在数据段.

下面看看怎么取出栈里的数据吧,

#include<stdio.h>
void fun(int a,...)
{
   int *p=&a;
int i=0;
   for(;i<a;i++)
{
printf("%d",*(++p));
}
}
int main()
{
  int a=3,b=5,c=9,d=7;
  fun(4,a,b,c,d);
}

然后gcc,执行结果3597