0x01 子函数
实际参数 ———(数值)—- 形式参数
注意
- c语言是传递值参并非变参。
- 并非 **
引用传递**–传递变参(地址) 。 - 传值调用——传递地址 并非 数值。
例如: scanf ————值参做变参(送的地址&)。
区分: 值传递 & 产地变参
子函数放在主函数前面 or 在主函数前加入函数声明
int sq(int);
int main()
{
int a;
printf("%d"sq(a));
}
int sq(int y)
{
return(y*y);
}
函数调用
- 函数表达式
- 函数实参
- 函数语句
- 判别
r=int fun(int a, int b);//错误 无需int
r=fun;//错误 fun当作变量
fun(a,b)//正确 但是返回值被丢失
注意:printf&scanf也有可能出错
例题
- 定义函数头
求一个整数的长度
int length(int n)
调用举例:输出变量num中的数据长度
printf("%d",length(num));
问:如何保证各个程序中各个函数独立?
处于不同内存区段

堆区
- 动态内存分配指令
栈区
-
只有一个口出入一个口
-
先进后出

-
先进后出自动保证了逐级返回
-
同名的参数——不同函数用不同的函数栈区
-
查看栈——调试(函数窗口)
函数声明可以在其他函数内部。但只可以在该函数使用。
应用举例
- 十进制转换二进制 八进制 十六进制。
算法思路


本文探讨了C语言中的子函数使用,强调了C语言传递参数的方式是值传递而非引用传递。解释了函数调用、函数表达式和函数栈区的概念,特别提到了栈区的先进后出特性确保了逐级返回。此外,文章还讨论了如何保证函数的独立性,即通过内存区段的划分,以及函数声明和定义的位置。最后,给出了一个应用实例,涉及十进制到二进制、八进制、十六进制的转换算法。
2278

被折叠的 条评论
为什么被折叠?



