函数的理解及代码实现

来源:互联网 发布:svd求逆矩阵 编辑:程序博客网 时间:2024/04/28 14:35


函数的概念

完成特定功能的代码段,它也是组成我们C语言源程序的基本单位

优点:

1)提高程序的可读性, 2)可以提高开发的效率 3)提高代码重用性


函数的分类:

库函数,用户定义函数,有无返回值,有无参数


4.、函数定义到使用分三步:


1、声明。2、定义函数。3、调用函数。


函数的定义

格式:

返回值 函数名(形参列表){

   函数体;

   return

}


命名规则:

1、只能由字母、数字、下划线或者美元符号($)组成

2、不能以数字开头

3、不能与关键字重名

4、严格区分大小写



4

有参无返回值:void test(int x,float y){ }

无参无返回值:void test1(){ }

有参有返回值: int max(int x,int y){ return x>y?x:y; }

无参有返回值: int test2(){ return 10;}


理解:

有返回值,说明,主函数调用之后,要赋值给某个变量,或者这个返回值有用途

函数名不能重名



函数的参数

区分形参和实参

形参

形参:在定义函数的时候,函数名后面小括号中的参数

格式: 数据类型 变量 :int x;

形式参数是什么样类型的数据,那么实际参数也必须是什么样的类型

形参变量只有在被调用时才分配内存单元

形参的作用域:只能在本函数中使用

在函数中,不能定义和形参同名的变量


实参

调用函数的时候传递的参数  可以是变量,也可以是常量,也可是是表达式,还能是函数

无论实参是何种类型的量,在进行函数调用时,它 们都必须具有确定的值,以便把这些值传送给形参。

因此应预先用赋值,输入等办法使实参获得确定值。


形参和实参的功能是作数值的传递。

发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。


实参和形参在  数量上  类型上  ,顺序上   应严格一致,否则会发生类型不匹配的错误。

知道什么是主调函数,什么是被调函数


函数的返回值


函数的值(或称函数返回值)是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。


被调函数返回给主调函数的值


主调函数:AB两个函数 ,如果在A中调用了B,A叫主调函数,B被调函数

return:被调函数返回给主调函数的值

函数的返回值使用return 关键字进行返回

1) return a+b; return a>b?a:b;  //可以是值也可以是表达式

2) 如果函数的返回值类型是void  可以写return表示程序返回了,不再向下执行

4) 函数中可以有多个return ,但是只有一个起作用

5)函数定义的返回值类型与return的值类型不一致,以定义的函数类型为准

6)如果函数是整型,可以忽略返回值类型


sum(int a,int b){  //习惯不要这么写

    returna+b;

}


int sum(int a,int b){

    returna+b;

}


函数的声明

1)函数的声明:

为什么要进行声明?

类似于变量的使用,我们要使用函数,就应该先定义函数,编译器不知道我们是否已经


定义了某个函数,为了防止编译器编译的时候报错(函数调用)


所以,要告诉编译器,我已经定义了哪些函数


用法:

返回值类型 被调函数名( 类型 形参, 类型 形参... );

返回值类型 被调函数名( 类型, 类型...);

:

int max( int a, int b );

int max( int, int ); //习惯不要这么写


注意点:

1/如果被调函数的返回值是int类型,此时可以不用声明

2/如果被调函数写在主调函数之前,此时可以不用声明

3/可以全局声明,也可能在主函数里面声明


4/声明可以值只有参数类型

int sum(int);

int sum(int num);


原则:

在调用函数之前,进行该函数的声明

声明的方法:

技巧:复制函数的头部,加上分号,写在调用调用方法之前 int max(int x,int y);//声明


函数的调用


max(56,78); //调用

函数的调用

函数名(实参列表);



函数代码实现:


#include


 



voidhello(){

    

   printf("hello world\n");

    

   //hello();//不能自已调用自已

    

   //不能嵌套定义

    

//    int a(){

//       return 0;

//    }

    

}


//void hello(){

//    printf("你好\n");

//}



//计算两个数的和,并且打印.

 intadd(inta,intb){

     

  // int a=0;

   //int b=0;

     

     a++;

     b++;

     

    if(a>0){

        return0;

     }

     

    printf("%d+%d=%d\n",a,b,a+b);

    hello();//可以调用别的函数

     

   return0;//同一作用域,return下面不能写代码,没有意义.

    return 0;return0;

     

}


intmain(){

    

   //add(4,"aa");

   //add(4,'a');

    intc=0;

    intd=0;

//    int a=0;

//    int b=0;

//   printf("%d+%d=%d",a,b,a+b);

  // add();

    inta=3;

    intb=2;

    

//参数传递的是值,而不是变量本身.函数里对参数的任何运算跟外部变量没有关系.

  // add(a,b);

   //printf("a=%d,b=%d",a,b);

    add(-2,1);

    hello();

    return0;

    

 

}



0 0
原创粉丝点击