函数

来源:互联网 发布:java交换函数 编辑:程序博客网 时间:2024/05/16 06:13
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中,加快了运行速度。

    如

  registerint x;

         register char c; 

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


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

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

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

                  如:externintAbc

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


0 0
原创粉丝点击