函数

本文详细介绍了C语言中的函数概念,包括函数的定义、调用方式、形参与实参的区别及值传递与地址传递的特点。此外,还讲解了不同类型的变量(如自动变量、静态变量、寄存器变量和外部变量)及其作用域。

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

C程序:
只包含一个主函数main()也可以包含一个主函数和若干个其它函数(库函数和自定义函数)

函数类型     函数名(形式参数类型说明表)

{

  声明部分

  执行部分

}

函数类型     函数名(形式参数类型说明表)

{

  声明部分

  执行部分

}

如:
printf(“Hello,World!\n”);
max(10,20);

函数调用的形式:

1)作为函数语句调用。函数一般无返回值。例:

printf(“Hello,World!\n”);

2)作为函数表达式调用。例:

m=max(a,b)*2;

3)作为函数参数调用。例:

printf(“%d”,max(a,b));

   m=max(a,max(b,c));

形参与实参

形式参数:定义函数时函数名后面括号中的变量名

实际参数:调用函数时函数名后面括号中的表达式

例 比较两个数并输出大者

例如:

#include <stdio.h>

void main()

{  int a,b,c;

   scanf("%d,%d",&a,&b);

   c=max(a,b);

   printf("Max is %d",c);

}

int max(int  x, int  y)

{  int z;

   z=x>y?x:y;

   return(z);

}


值传递方式方式:

函数调用时,为形参分配单元,并将实参的值复制到形参中调用结束,形参单元被释放,实参单元仍保留并维持原值;

特点

形参与实参占用不同的内存单元;  

单向传递地址传递方式:

函数调用时,将数据的存储地址作为参数传递给形参

特点:

形参与实参占用同样的存储单元;
双向”传递;
实参和形参必须是地址常量或变量;
局部变量默认为auto型
register型变量个数受限,且不能为long, double, float型
局部static变量具有全局寿命和局部可见性
局部static变量具有可继承性(下次进入函数该值还存在)
extern不是变量定义,可扩展外部变量作用域

自动变量是最常用的关键字auto能够显式地指定存储类别。

               显式定义         auto int xy

               隐含定义    等价       int xy

    实际上关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,即动态存储方式。

    程序中大多数变量属于自动变量。

对于使用频繁的变量,可以使用register声明为寄存器变量,其值存储在CPU中,加快了运行速度。

    如

  register int x;

          register char c; 

函数中的局部变量的值在函数调用结束后不消失而保留原值,以便下一次调用该函数时可以使用上一次调用的最后结果。这时就应该指定该局部变量为“静态局部变量”。


外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。

    ⑴在一个文件内声明外部变量

   如果全局变量在后面定义,而在前面的函数中要使用,则必须在使用前用extern声明该全局变量。

                  如:extern intAbc

外部变量只限于被本文件引用,而不能被其它文件引用,可以在定义外部变量时加一个static声明。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值