本人坚持更新C语言和数据结构知识,可以收藏+关注随时了解😜😜😜
目录
函数调用和函数定义的顺序
如果函数调用写在了函数定义的前面,则必须加函数前置声明
函数前置声明的作用:
- 告诉编译器,即将可能出现的若干个字母所代表的是一个函数
- 告诉编译器即将可能出现若干个字母所代表的函数的形参和返回值的具体情况
- 函数声明是一个语句,末尾必须加分号
- 对库函数的声明是通过#include<库函数所在的文件的名字.h>来实现
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
void judge_Prime(int val);
int main(int argc, char const *argv[])
{
printf("请输入你想测试的范围:\n");
int test_number;
scanf("%d", &test_number);
printf("1~%d之间的素数有:\n");
for (int i = 1; i <= test_number; i++)
{
judge_Prime(i);
}
return 0;
}
//判断一个函数是否为素数
void judge_Prime(int val)
{
int i;
for (i = 2; i <= sqrt(val); i++)
{
if (val % i == 0)
{
break;
}
}
if (i <= sqrt(val))
{
printf("%d is not a Prime\n", val);
}
else
{
printf("%d is a Prime\n", val);
}
}
例如这个判断素数的例子,我们在主函数下面编写了judge_Prime(int val)函数,因为main函数放在前面,我们在执行main函数的时候,不知道judge_Prime(int val)这个函数是什么,所以需要提前声明。
形参和实参
形参就是我们在定义函数时,小括号中写的参数
实参是我们调用函数时,传入的参数
形参和实参的个数必须相同,位置要一一对应,数据类型要兼容
void test(int a){
printf("%d",a);
}
int main(){
test(100);
return 0;
}
例如这个程序,test函数()中的a就是形参,main函数中的test(100),100就是实参
形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
如何写好一个函数?
一个函数的功能尽量独立,单一,来保证函数的可移植性