c语言参数传递及返回值及变量存储.docVIP

  • 1
  • 0
  • 约2.97千字
  • 约 5页
  • 2017-05-20 发布于北京
  • 举报
c语言参数传递及返回值及变量存储

unsigned int n; void f1(); int f2(int,int); void far f3(); main() { n=0; f1(); n=f2(1,2); f3(); } void f1() { n=1; } int f2(int a,int b) { int c; c=a+b; return c; } void far f3() { n=10; } 问题: 1程序运行时,n,a,b,c的段地址在哪个寄存器当中? 2全局变量的存储空间在什么段里?局部变量的存储空间在什么段里? 参数的存储空间在什么段里?函数的返回值又在什么段里? 3全局变量的存储空间在什么时候分配?什么时候释放? 4局部变量的存储空间在什么时候分配? 什么时候释放? 5参数的存储空间在什么时候分配? 什么时候释放? 6 函数f3 的在调用与返回上与函数f1 和f2 有何不同? (unsigned int n;) 程序运行时变量n的段地址是放在ds寄存器里面的,这说明全局变量是放在内存里面的数据段,是而a,b,c等局部的变量都是放在栈段里面的,参数的存储位置也是栈段里头,而且是通过ax将参数压入栈中,然后用ss:bp 读取栈段里面的数据。 全局变量是在变量定义的时候就给变量分配了空间,全局变量空而局部变量则是在变量赋值过程中或者说是要用到的时候才分配的空间,在用完之后会马上

文档评论(0)

1亿VIP精品文档

相关文档