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));
问:如何保证各个程序中各个函数独立?
处于不同内存区段
堆区
- 动态内存分配指令
栈区
-
只有一个口出入一个口
-
先进后出
-
先进后出自动保证了逐级返回
-
同名的参数——不同函数用不同的函数栈区
-
查看栈——调试(函数窗口)
函数声明可以在其他函数内部。但只可以在该函数使用。
应用举例
- 十进制转换二进制 八进制 十六进制。
算法思路