#include<stdio.h>
void er(int x)
{
if (x >2||x==2)
{
er(x / 2);
}
printf("%d", x % 2);
}
int main()
{
int n = 0;
scanf_s("%d", &n);
er(n);
return 0;
}
一、实际参数是什么?
实际参数,也叫实参,即真实传给函数的参数,可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值。如上代码中,n为实参。
二、形式参数是什么?
形式参数,也叫形参,即函数名后括号中的变量。形式参数只有在函数被调用的过程中才实例化(分配内存单元)。形式参数在函数调用完成之后便自动销毁,因此,形式参数只在函数中有效。
我们可以简单的以为:形参实例化之后其实相当于实参的一份临时拷贝。如上代码中,x为形参。
三、函数的调用
1.传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响到实参。
2.传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的练习,函数内部可以直接操纵函数外部的变量。
四、函数的嵌套调用
#include <stdio.h>
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for(i=0; i<3; i++)
{
new_line();
}
}
int main()
{
three_line();
return 0; }
函数可以嵌套调用,但是不能嵌套定义。
【题目巩固】
兄弟们,冲!一起来巩固一下知识。
1.关于实参和形参描述错误的是:( )
A.形参是实参的一份临时拷贝。
B.形参是在函数调用的时候才实例化,才开辟内存空间
C.改变形参就是改变实参
D.函数调用如果采用传值调用,改变形参不影响实参
2.函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是:( )
A.3
B.4
C.5
D.6
解析:v5,v6这不用说了,已经两个了。兄弟们,我前面说了实参可以是常量、变量、表达式、函数等。(v1,v2)、(v3,v4)这两个都是逗号表达式。所以,选b。
3.在C语言的函数中( )
A. 必须有形参
B. 形参必须是变量名
C. 可以有也可以没有形参
D. 数组名不能作形参