6.2函数的调用and声明and函数原型

本文详细介绍了C语言中函数的调用方式,包括函数调用的一般形式、数据传递过程,特别是实参和形参的关系。讨论了函数调用时的数据传递机制,以及形参在函数调用前后内存的变化。此外,还阐述了函数声明和函数原型的重要性,解释了为何要在函数定义前进行声明,以确保编译顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.2 函数的调用&声明&函数原型

一、函数调用的一般形式&调用方式

一般形式:函数名(实参表列)

函数调用方式

按照函数调用在程序中出现的

  1. 函数调用语句
    1. 函数调用作为一个语句,可以不返回参数;
    printf_star();//printf_star为自定义的函数
    
  2. 函数表达式
    1. 函数调用时出现在另一个表达式中
    c=max(a,b);//max为调用的函数
    
  3. 函数参数
    1. 函数调用作为另一个函数调用的实参
    m=max(a,max(b,c));
    

二、函数调用时的数据传递

函数形参&实参

实际参数可以是常量、变量和表达式,但必须要有确定的值

实参和形参之间的数据传递

在函数调用时,形参会从实际参数那里拿到参与运算的实际的值。
在函数调用过程中发生的实参与形参之间的数据传递称之为“虚实结合”
函数调用结束后就继续返回主调函数往下走,而为该被调函数开辟的内存空间也就被释放了。
实参和形参的数据类型应该相互兼容,字符型、整型等可以相互转换

函数调用的过程

  1. 函数未调用前,形参是不占内存空间的,只有在被调用时,则会被临时分配一块内存空间。
  2. 将实参的值传递给形参,形参得到实参的值后参与运算。
  3. 利用return 将函数运算的结果返回主调函数,如果不需要返回值,则定义函数类型为 void 也就不用写 return 了
  4. 调用结束后,形参单元被释放,函数语句返回主函数继续运行,这时候,实参单元的值还是原来的值,并没有改变
注意
实参向形参的数据传递是“值传递”的过程,单向传递,只能由实参传递给形参,而不能由形参传递给实参,实参和形参在内存中占有不同的内存存储单元,实参无法得到形参的值。

函数的返回值

  1. 需要从被调函数中得到一个值到主调函数中,需要用 return 语句
  2. 一个函数中可以有多个return,不过只有第一个被执行到的return 起作用,直接从被调函数带一个值到主调函数中,被调函数就结束了,return 这句后边不管有没有语句都结束了。
  3. 定义时应指定函数返回值的类型,要类型一致。如果return 后边返回的值与函数类型不一致,要以函数名前的数据类型一致。即 函数类型决定返回值类型
  4. 不带函数返回值的函数,定义成 void 类型,函数体里边也不要写return。

三、对被调函数的声明和函数原型

如果一个自定义函数被调用的位置在定义的位置前,则需要提前对这个函数进行声明,格式与定义相同,可以不用写形参名,只写形参类型即可。

为什么要提前声明???
因为程序编译是自上而下的,你自己定义的函数系统是识别不了的,必须提前告诉系统这是我自定义的函数,否则他以为你自己胡乱写的垃圾代码,就会报错。函数声明就是起一个告知系统的作用。

自定义函数的首行也叫函数首部,称为函数原型

int max (int,int); //函数声明
int max (int a,int b) //函数首部   也称之为函数原型
{
    函数体
}

外部声明:写在所有函数前面的声明叫外部声明,对整个文件范围都有效,不用在被调函数前再进行声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值