C函数与程序结构学习

        C语言程序一般都由许多小的函数组成,而不是由少量较大的函数组成。 C程序可由一个主函数和多个其他函数构成,由主函数调用其他函数,其他函数之间也可以互相调用。函数之间的通信可以通过参数(实参到形参)、函数返回值(return)以及外部变量进行。

     说明:(1)若干源文件,但是仅有一个主源文件,便于编写、分别编译,保证一个函数不被分离到多个文件中

                     #    三个函数分别为  main.c   getline.c  strindex.c

                    则可以使用命令   cc   main.c   getline.c  strindex.c      来编译这3个文件,并把生成的目标代码存放在文件 main.o  getline.o strindec.o 中,然后把这3个文件加载到可执行文件a.out中,如果存在错误(比如 main.c中存在错误),则可通过 命令 cc main.c   getline.o strindex.o  重新编译并将编译结果一起加载到可执行结果a.out中

                 (2)一个源文件是一个编译单位,程序编译是以源文件为单位编译,而不是以函数为单位

                 (3)C程序的执行是从main函数开始的,main中结束

                 (4)函数之间相互独立,不能嵌套定义,可相互调用,但不能调用main函数,main函数是系统调用的


     函数定义的一般形式:

               类型标识符  函数名(形式参数列表)

                 {

                     声明部分

                     语句部分

                }

               形参不占内存空间,只有发生调用的时候才分配空间,调用结束后释放空间。在内存中形参和实参是不同的单元,形参的值改变不影响实参。

               函数无返回值时,类型标识符可用void。

              类型标识符不写 ,默认按整型处理,函数带有参数则要声明它们;如果没有参数,则使用void。

      函数声明可在最前和mian函数里面,(Ritchie书里面一般放在最前 ),被调函数在主调函数之前可省。

              编译系统不检查声明部分的参数名,可以不写。实参类型必须与函数原型中形参类型一致,否则出错。

              

              extern声明外部变量的作用:1,可先使用后定义  2,在不同源文件中变量的使用            

              外部变量的作用域从声明它的地方开始到所在文件的末尾结束。(详见 Ritchie书P80)。外部变量的定义和使用不再同一个源文件中,则需使用关键字extern,但这个声明没有建立变量或为它们分配存储单元。在一个源文件夹的所有源文件中,一个外部变量只能在某个文件中定义一次,外部变量的定义中必须指定数组的长度,但extern声明不一定要指定数组长度。

                      例:

                          file1

                          extern  int sp;

                         extern   double val[];

                         void push(double ) { ... }

                         file2:

                         #define  MAXVAL  100

                         int sp =0;

                        double val[MAXVAL];


                 static有定义的作用,如static int a;  static 声明变量使它们仅供其所在的源函数使用,其他函数不能访问。

                 extern 和 static 都不释放存储空间。





                     







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值