C语言学习笔记(四)——函数(重点)

   第四章                               函数【重点】

 

    (1)C语言的基本单位就是函数。C语言程序是由一个个函数组成。JavaC++C#等面向对象语言的基本单位是类。

    (2)为什么需要函数:使用函数,避免了重复性操作,有利于程序的【模块化】。

    (3)C语言中的函数是面向过程的函数,与面向对象中的函数不同。

    (4)函数是一个工具,是为解决大量的同一类型的问题而设计的。

    (5)printfscanf等都是系统定义的函数工具。

    (6)在函数的设计中,函数的功能要尽量单一,以便进行不同目的时多次引用。

    (7)函数的参数个数尽量不要超过5个。

    (8)在函数的设计中,函数模块的功能尽可能独立化,提高代码的利用率。如:判断类函数可设计为布尔型。

       每个程序代码必有其局限性,应取最优化。

    (9)当函数较难理解时,可在注释中写明函数的功能。

    (10)函数名相同,形参不同,也不是同一个函数。

 

1.定义函数:

    函数的返回值类型+函数名(形参类型+形参) //返回值类型除常用类型外,也可以为void,即返回值为空。(注意:返                  

{                                        回值为空并不代表返回0,而是返回空值。)

             函数的执行体;

             return+表达式;

    }

    return+返回值;return后跟的返回值即为整个函数的值。

    如:

    voidmax(int i, int j) //max是函数名,int是形参类型,ij是形式参数(形参),以接收实参传值void表示函数没

    {                            有返回值。

             if(i > j)

                      printf("%d\n",i);

             else

                      printf("%d\n",j);

    }

    在函数引用时:

             max(a,b) //max是引用max函数,括号内的a,b是实参,将a,b的值发送给max函数的形参,实参形参一一对应。

    引用函数完毕后,为函数形参i,j分配的内存空间会被释放掉。

    又如常用的main函数:int main(void) //int代表函数返回值的类型,main是函数名,void代表此函数不接收任何值。

 

2.函数的类型:

             函数返回值的类型也称为函数的类型,即为定义时函数名前的类型。

             如果函数返回值的类型与定义类型不同,则以函数名前的定义类型为准。

             如:        intf(void)

                      {

                                return10.5; //只会返回整型数字10,而不是10.5

                      }

             布尔类型:bool其返回值为布尔型,即truefalse,也就是函数的值为truefalse

             if()

                      returntrue;

             else

                      returnfalse;

 

3.breakreturn的区别:

    break用于终止for循环或switch

    return用于终止整个函数。return后跟值终止被调函数并将此值返回给主调函数,当函数定义类型为void时,如果需要用             

    return,那么return后不能写值,则此时return只终止被调函数。

    voidf(void)

    {

             inti;

    

             for(i=0;i<5; i++)

             {

                      printf("呵呵!\n");

                      break;      //break用于终止for循环。

             }

 

             return;    //return用于终止整个函数。

    

             printf("哈哈!\n");

    }

4.函数的声明:

             当函数定义位于函数调用之后时,编译器先编译主函数中调用语句而被调函数没有编译,不能识别导致出错。

    所以需要函数的声明。函数的声明需位于主函数的前面以便被编译器先编译识别。

    注意:函数的声明需要与后面被声明的函数形式相一致。

          但函数的声明一般不需要加形参字母

         即:void swap(int, int)

    函数的前置声明:

             1.告诉编译器即将可能出现的若干个字母代表的是一个函数;

             2.告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的个体情况;

             3.函数声明是一个语句,末尾必须加分号;

             4.对库函数的声明是通过# include <库函数所在文件的名字.h>来实现的。

    如:

    #include <stdio.h>

 

    voidf(void);     //函数的声明,即声明f是一个函数,注意:声明是一个语句,后有分号。

 

    intmain(void)

    {

 

             f();

 

             return0;

    }

 

    voidf(void)

    {

             printf("哈哈!\n");

    }

 

    注意:

             主函数(即为main函数)与普通函数

             一个程序必须有且只能有一个主函数,主函数可以调用普通函数,但普通函数不能调用主函数;

             普通函数可以相互调用;

             主函数是程序的入口,也是程序的出口。

             虽然主函数(main函数)是程序的入口,但编译器是从上往下编译的。

             编译顺序:从头到main函数编译,main函数结束后,程序即结束,main函数后的语句如果没有前置则不会被编译

    实参与形参:

             实参传递(复制/赋值)给形参,C语言中传递方式有两种:值传递、地址传递

                                              C++中传递方式有三种:值传递、地址传递和引用传递。

             实参与形参的个数、位置和类型必须一一对应。

             实参与形参的传递:复制、赋值。

    变量的分类:

             按作用域分:

                      1.全局变量(Public

                                在函数外部定义的变量。

                      2.局部变量(Private

                                在函数内部定义的变量及函数的形参。

                      注意1:如要定义全局变量,应定义在头文件中,虽然主函数(main函数)是程序的入口,但编译器是             

             从上往下编译的。即如果全局变量定义在调用函数之后,则不能被编译识别而报错。

                      注意2:全局变量名与局部变量名冲突的问题,当全局变量名与局部变量名相同时,会默认采用局部变                      量,即局部变量(Private)优先级>全局变量(Public)。

 

             按存储方式分:

                      1.静态变量(static

                      2.自动变量(auto int等)

                      3.寄存器变量(register

                      4.局外变量(extern

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值