今天我们要学习的是c语言中的函数(2)
目录:
一.函数的参数
1.实参
2.形参
二.函数的调用
1.传值调用
2.传址调用
3.练习
三.重点
下面我们正式学习c语言中的函数(2)
一.函数的参数
函数的参数分为:形式参数和实际参数
1.实参
真实传递给函数的参数叫做实参
实参可以是常量,变量,表达式,函数等
无论实参的形式是怎样的,但终究实参拥有一个特定的值,以便于把值传递给形参
2.形参
形参是指函数后面括号里面的变量,因为形参只有在函数调用的过程中才实例化(分配内存),它在未被调用的时候不会分配内存,所以叫做形式参数,形参函数完成后会自动销毁,只在函数内发挥作用
注意:形参实例化后相当于实参的一个临时拷贝,如果需要更改实参的值的话必须使用指针更改,不需要更改实参的话随意。
二.函数的调用
函数的调用分为:传值调用和传址调用
1.传值调用
函数的形参和实参分别调用不同的内存块,对形参的修改不会影响实参,实参只是把自己的的数值传递给了形参
2.传址调用
传址调用是指把函数外部的内存地址传递给函数形参的一种调用函数的方法
这种调用方式可以把函数的内部和外部真正联系在一起,也就是函数内部可直接操控函数外部的变量
3.练习
1.写一个函数来判断是不是素数(素数是大于1且只能被该数本身整除的数)
#include <stdio.h>
void sushu(int a)
{
int c=0;
if(a>1)
{
for(int b=2;b<=a;b++)
{
if(a%b==0)
{
c++;
}
}
if(c==1)
printf("这个数是素数\n");
else
printf("这个数不是素数\n");
}
else
printf("这个数不是素数\n");
}
int main()
{
int num1;
scanf("%d",&num1);
sushu(num1);
return 0;
}
代码解析:
1.素数是指大于1且只能被自己整除的数
2.上述代码是判断num1是否为素数,num1作为实参通过传值调用作用到a这个形参之中
3.a%b是为了判断a是否能被b整除,c++是为了判断a能被整除的次数,如果c==1那么这个数之能被整除一次,所以这个数为素数
另解:
判断素数的另一种方法:如果一个数不是素数(m),那么m=a*b,a和b中必有一个数字是小于等于m的开平方(sqrt),所以说我们只要能在小于m的开平方中找到能够整除m的因子,那么就能说明m的不是素数
三.重点
1.判断素数的两种方法
2.传址调用和传值调用的区别
3.形参和实参的区别
明天我们要学习c语言中的函数(3)