1.形参和实参
1.形参:也叫形式参数,自定义函数的()中的就是形式参数。因为只有在调用函数时才会开辟空间创造并储存形参,不调用函数则只是在形式上存在,不占用空间,因此叫做形式参数。
2.实参:即真实传递给函数的参数。
3.两者关系:形参和实参储存的内容是相同的,但是他们的地址是不同的,也就是说他们实际储存在两个空间,而不是同一个空间。因此即使在自定义函数改变了形参的值,实参的值也不会改变。
2.return语句
如果想创造一个可以返回数据的函数,就要使用void类型以外的数据类型创造函数,并使用return语句返回数据,如:
int add(int x,int y)
{
int z = x + y;
return z;
}
int main()
{
int x = 1;
int y = 2;
int answer = add( x, y );
return 0;
}
在这段函数中,return返回了int类型的z,并把它赋值给了answer。
3.数组传参
1.当数组作为实参并传递给形参时,应输入数组名,如:
int arr[] = {0};
Print_arr(arr);
其中的 arr 其实是类型为 int [] 的数组的数组名。
2.在数组传参时,实际上传送的是数组的首元素的地址,因此在自定义函数中对应的创建数组或是指针都是可行的,并且两种做法都实际上传送了指针,因此实参和形参地址是相同的,和其他数据类型的传参有本质上的区别。改变形参的同时实参也会改变。
4.嵌套调用与链式访问
1.嵌套使用:可以类比成数学的函数嵌套,如:
y(g(f(x))),y(x) = x,g(x) = x^2,f(x) = x + 1;
C函数的使用与其类似,如:
int main()
{
printf("%d",add(x, y ));
}
在main函数中调用了printf函数。
2.链式访问:
在上文中 printf("%d",add(x, y )); 就是在printf中访问了add函数,这就叫链式访问。
5.函数的申明与定义
1.定义:
像这种形式的代码就叫函数的申明。
2.申明:
像这样把函数定义在主函数后就会报错,这是因为代码是一行一行的向下执行的,把定义放在后面,程序就无法读取,这时就要声明函数。
像这样在主函数之前声明函数,就能是程序正常运行。
完