函数

来源:互联网 发布:51单片机有趣的小制作 编辑:程序博客网 时间:2024/06/06 18:58
1.C程序:
    只包含一个主函数main(),也可以包含一个主函数和若干个其它函数(库函数和自定义函数)
    函数类型     函数名(形式参数类型说明表)
   {
       声明部分
       执行部分
   }

2.函数调用的形式:
  (1)作为函数语句调用。函数一般无返回值。例:
           printf(“Hello,World!\n”);
  (2)作为函数表达式调用。例:
          m=max(a,b)*2;
  (3)作为函数参数调用。例:
          printf(“%d”,max(a,b));
          m=max(a,max(b,c));


3.形参与实参
   形式参数:定义函数时函数名后面括号中的变量名
   实际参数:调用函数时函数名后面括号中的表达


4.参数传递的两种方式
  1.值传递方式方式:
  函数调用时,为形参分配单元,并将实参的值复制到形参中;
  调用结束,形参单元被释放,实参单元仍保留并维持原值;
  特点:
  形参与实参占用不同的内存单元;  单向传递

  2.地址传递方式:
     函数调用时,将数据的存储地址作为参数传递给形参
   特点:
   形参与实参占用同样的存储单元;
  “双向”传递;
   实参和形参必须是地址常量或变量;

5.函数的执行过程
 1.通过函数名,找到函数的入口地址;
   2.给形参分配空间;
   3.值传递;
   4.执行函数体的语句;
   5.返回;
   6.释放空间。

6.变量的存储类型

注意点:
     1. 不能对寄存器变量取地址,,在CPU中,不再内存中;
     2. static: 修饰静态局部变量,只定义一次,只分配一次内存空间,改变变量的生存周期至程序运行结束;
                       修饰全局变量,该变量只能在本文件访问;
                          修饰函数,使得该函数只能在本文件中使用。
     3.没有被初始化的局部变量时垃圾值,而全局变量自动赋初值为0或空字符。

2.自动变量是最常用的。 关键字auto能够显式地指定存储类别。
               显式定义         auto int x,y;
               隐含定义    等价       int x,y;
      实际上关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,即动态存储方式。
      程序中大多数变量属于自动变量。

   3.对于使用频繁的变量,可以使用register声明为寄存器变量,其值存储在CPU中,加快了运行速度。
    如:
          register int x;
          register char c;
  4.函数中的局部变量的值在函数调用结束后不消失而保留原值,以便下一次调用该函数时可以使用上一次      调用的最后结果。这时就应该指定该局部变量为“静态局部变量”。

  5.外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。
    ⑴在一个文件内声明外部变量
    如果全局变量在后面定义,而在前面的函数中要使用,则必须在使用前用extern声明该全局变量。
      如:extern int Abc;

    注意:外部变量只限于被本文件引用,而不能被其它文件引用,可以在定义外部变量时加一个static声明。
变量的存储类型变量的存储类型
原创粉丝点击