一、函数的嵌套调用
在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。
默认的传参顺序为自右向左。
禁止在实参内对同一变量进行++或--算法
例如K=intcmp(++i,++j);
C语言不能嵌套定义函数,但可以嵌套调用函数。
栈区:使用栈结构存储数据,遵循“先进后出”的原则,即最先进栈的数据最后出栈。
在C语言中,栈区主要存放函数的参数值、局部变量以及函数调用和返回时的入口参数和返回值。
局部变量:在函数内部定义的变量,如int x, char y等,这些变量的值存储在栈区。
函数参数:当函数被调用时,传递给函数的参数也存储在栈区。
返回值和返回地址:函数执行完毕后,其返回值和返回地址也存储在栈区,用于控制流程的返回。
栈区的特点是自动分配和释放,由编译器管理,不需要手动干预。当函数运行结束时,栈区中的内容会自动被销毁。
程序的内存分配分为:栈区,堆区,字符串常量区,静态区(全局区),代码区。
二、函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
程序中不应该出现无终止的递归调用,只能出现有限次数的、有终止的递归调用。
举例如下: