C语言_函数

1.函数定义

(1)定义无参函数

类型名 函数名()
{
    函数体
}
或
类型名 函数名(void)
{
    函数体
}

(2)定义有参函数

类型名 函数名(形式参数列表)
{
    函数体
}

(3)定义空函数

类型名 函数名()
{

}

2.函数的调用

(1)函数调用形式

printf_star();        //调用无参函数
c=max(a,b);            //调用有参函数
m=max(a,max(b,c));    //函数参数

(2)形参与实参

形参:在定义函数时,函数名括号内的变量名称为"形式参数"。

           参数必须要指定类型

实参:在调用函数时,传递进去的值被称为实参,实参可以是 变量、常量或者表达式。

           实参必须是确定的值

数据传递

         传值不改变内存之间传递、不改变元内存

         传地址:把变量地址传递,改变原内存

3.函数调用过程

(1)在定义函数中指定形参,在未出现函数调用,不占内存中存储单元,在发生调用时,函数的形参被分配内存单元

(2)将实参传个形参对应的值

(3)在执行max函数期间,由于有值,可以进行有关运算

(4)通过return语句将函数值带回主调函数,如果无返回值,则不需要return

(5)调用结束,形参单元被释放,实参仍保留,形参改变不影响实参的值

4.函数的返回值

(1)函数返回值是通过函数中的return语句获得的

(2)函数值的类型,在定义函数时就要指定

(3)在定义函数时指定的函数类型一般应该和return语句的表达式类型一致

(4)对于不带返回值的函数,应当用定义函数为“void类型”(或称“空类型”)

5.对被调用函数的声明与函数原型

在一个函数中调用另一个函数(即被调用函数)需要如下条件

(1)首先被调用函数必须是已经定义好的函数

(2)如果使用库函数,在开头使用#include指令

(3)如果使用用户自己定义的函数,而该函数位置在主函数的后面,应在主调函数对被调函数作声明

         声明作用:把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法

#include<stdio.h>
int main(){
    void add();
    add();
    return 0;
}
add()
{
    printf("hello");
}

6.函数声明方式有两种

(1)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,······ ,参数类型n 参数名n)

(2)函数类型 函数名(参数类型1,参数类型2,······,参数类型n)

7.函数的嵌套调用

C语言函数是相互平行、独立的,也就是说一个函数内不能再定义另一个函数,不能嵌套定义,但可以嵌套调用函数,也就是说再调用一个函数过程中可以调用另一个函数

函数递归:在调用一个函数的过程中又直接间接地调用该函数本身,被称为函数的递归

8.数组作为参数传递

(1)数组元素可以作为函数实参,不能用于形参,因为形参是在函数调用时临时分配存储单元,不可能为一个数组元素单独分配存储单元,把数组元素做实参传递实际时值传递,是从实参到形参,单向传递。

max(2,a[i]);

(2)数组名作为函数参数,用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名做函数实参时,向形参(数组名或指针变量)传递的时数组首个元素的地址

int main(){
    average(float array[10]);
    float sore[10];
    average(score);
    return 0;
}
average(float array[10]){

}

array作为形参可以不指定大小,只是将实参的首个地址传进形参

多维函数传参

int main(){
    average(float array[2][10]);
    float sore[2][10];
    average(score);
    return 0;
}
average(float array[2][10]){

}

9.局部变量与全局变量

(1)局部变量定义三种情况

          在函数开头

          在函数复合语句内定义

          在函数的外部定义

(2)全局变量

在函数之外定义的变量称为外部变量,外部变量被称为全局变量(也称为全程变量)

10.变量的存储方式和生存期

(1)变量的存储方式

          动态存储和静态存储

存储空间分为(1)程序区(2)静态存储区(3)动态存储区

数据分别存在静态存储区和动态存储区。

全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。

在动态存储区存放一下数据

(1)函数形式参数

(2)函数中定义的没用关键字static声明的变量

(3)函数调用时的现场保护和返回地址等

调用开始分配存储空间,结束释放空间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值