一 、函数的基本用法
- 定义:函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值;
一般形式 ;<数据类型> <函数名称> (<形式参数说明>)
{
语句序列;
return [(< 表达式 >)];
}
< 数据类型 > :函数的数据类型 与return 返回的数据类型要一致。
形式参数说明 :如果有多个形式参数,用‘,’隔开。
语句序列 :语句序 列也可以称之为 函数体,<语句序列>由 大于或等于零条语句构成。
- 函数的使用也叫函数的调用。
形式 :函数名称(<实际参数>);
实际参数 :函数在被调用时,调用函数时调入函数中的数据。需要的是一个确切的值。
函数调用可以当作一个运算量出现在表达式中,也可以单独形成一条语句。对于无返回值的函数来讲,只能形成一个函数调用语句。
#include <stdio.h>
void fig(void)
{
printf("zuozhe!!");
}
int main(void)
{
printf("start !!");
fig(); //调用函数
printf("end !!!!!");
return 0 ;
}
总结:两个(多个)函数的情况下,函数总是从 main函数开始执行。
fig()函数可以被调用。
传参函数 :
例如 void power(double x,int y);
- 函数要调用之前 需要先说明,让编译器 知道函数的各种参数,不然会报错。
函数的说明就是指函数的原型。
注:函数的使用一般分为 ----------- 函数的说明,函数的实现,函数的调用。
二 、 函数的参数传递
1、函数之间变量参数传递的方法
- 全局变量
全局变量 : 定义在函数体之外的变量,对于所有的函数而言都是可见的。
缺点:所有的函数都可以改变它,需要时刻对该函数进行维护,不太建议使用。
- 赋值传递方式
调用函数将实参传递给被调用函数,被调用的函数将创建同一类型的形参并用实参进行初始化。
形参事新开辟的存储空间,因此,在函数中改变形参的值,不会影响到实参。
反例 :
#include <stdio.h>
int qsts(int a,int b) //a 、b相互交换
{
int t ;
t = a;
a = b;
b = t;
}
int main(int argc, const char *argv[])
{
int a = 20 ;
int b = 10;
printf("%d %d \n",a,b);
qsts(a,b);
printf("%d %d \n",a,b);
return 0;
}
输出 : 20 10 ; 20 10 两者没有交换 --------------------- 改变形参的值不会改变 实参的值。
- 地址传递方式
将实参的地址作为 值传递给 调用函数;在调用的函数中可直接改变传过来的地址中的值。
#include <stdio.h>
int qsts(int* a,int* b)
{
int t ;
t = *a;
*a = *b;
*b = t;
}
int main(int argc, const char *argv[])
{
int a = 20 ;
int b = 10;
printf("%d %d \n",a,b);
qsts(&a,&b);
printf("%d %d \n",a,b);
return 0;
}
输出 : 20 10 ;10 20 两者交换成功 ;------------------- 地址传递可以 在调用函数中 改变 实参的值。
2、数组在函数间传参
- 全局数组传递方式
- 复制传递方式
实参是数组的指针,形参 是 数组名(本质是一个指针变量)
题目 :编写函数,计算一个一维整型数组 中所有元素的和。
#include <stdio.h>
int arry_sum(int arry[],int num) //可以改成 int arry_num(int* arry,int num)
{
int i ;
int sum = 0 ;
for(i = 0;i<num ; i++)
{
printf("%d ",arry[i]);
sum = sum+ arry[i];
}
return sum;
}
int main(int argc, const char *argv[])
{
int a[] = {3,4,5,2,5,6};
int sum = 0 ;
int n =0;
n = sizeof(a)/sizeof(int);
sum = arry_sum(a,n);
printf("%d \n",sum);
return 0;
}
- 地址传递方式
实参是数组的指针,形参 是 同类型的 指针变量
题目 :编辑函数,删除字符串中的空格
注: 适当的时候使用Const ,会使得函数显的更加的严谨。