/********************* 分割线 ***************************/
感谢原作者。
/********************* 分割线 ***************************/
0引
C/C++中,函数内部的一切变量(函数内部局部变量,形参)都是在其被调用时才被分配内存单元。子函数运行结束时,所有局部变量的内存单元会被系统释放。形参和函数内部的局部变量的生命期和作用域都是在函数内部(static变量的生命期除外)。
在C中,函数被调用时的传参方式有两种形式:传值和传址。
传址的好处:
(1)能在函数内部通过实参地址间接地改变实参的值。
(2)当所传实参内容比较庞大时,传址只是复制了整个实参的地址过去,指针依据同一个地址访问实参变量。而传值就会将实参内容整个拷贝过去,形参会跟实参占一样大的内存,栈空间是有限的。当然了,在弱小的程序中,传址的这个优点不会被体现出来。
在函数中,可以随意的返回一个局部变量。但如果返回一个局部变量的地址(指针),编译器就会给出警告(编译器也不可能那么完美能够彻底的检查出段错误)。在函数内部返局部指针这的确是一个危险的操作。鄙人的笔记先将用return返回值(指针为地址值)的机制搞清楚后再分析一下。
1函数内部返回局部变量过程
1.1结论
Linux等的C语言中return返回值的机制为:将返回值存入eax寄存器中,然后系统再将eax中的值赋给变量(i)。
(1)编写一个简单的C源程序
在linux 下敲一个简单的函数调用的程序: