函数

函数是一段可以重复调用的、功能相对独立完整的程序段。

①C语言是函数式语言

②必须有且仅有一个名为main的主函数

③C程序的执行总是从main函数开始,在main中结束

④函数不可以嵌套定义,但可以嵌套调用

函数的分类:

①从使用者角度:标准函数(库函数,直接调用)和用户自定义函数(用户自己编写的)

②从函数形式调度:无参数无返回值函数、无参数有返回值函数、有参数无返回值函数、有参数有返回值函数

使用库函数应注意:

①函数功能 

②函数参数的数目和顺序、各参数意义和类型

③函数返回值意义和类型

④需要使用的的包含文件


函数的定义和调用

Ⅰ.无参数无返回值函数:

函数声明:void 函数名(void) ; 或者 void 函数名();

函数调用:函数名();

注意:对函数调用之前,必须先声明或先定义

编写C程序的一般格式:

①文件包含(include <stdio.h>等,用于标准库库函数原型声明)

②产量定义(根据需要而定,如 #define  PI3.1415等)

③变量定义

④用户自定义函数声明

⑤main函数

⑥函数的实现

函数的返回形式:

①return(表达式);  //有返回值

②return  表达式;  //有返回值

③return ;  //无返回值

函数中可以有多个return语句。对于无参数无返回值函数只能第三种形式

#include <stdio.h>

#include <math.h>

void showerror(); //声明showerror函数的原型

void main()

{

   int a;

   scanf("%d", &a);

   while(a < 0)

   {

       showerror(); 

       scanf("%d", &a);

   }

   printf("sqrt(a) = %.2f\n", sqrt(a));

}

void showerror() //函数的定义 无参数无返回值

{

   printf("input error !\n");  //函数体

}


Ⅱ.无参数有返回值函数

函数声明:返回值类型符 函数名(void); 或 返回值类型符  函数名(); 

多用于完成某项固定的处理,执行完成后向调用者返回函数值。

函数调用: 函数名();  或者  变量 = 函数名();

函数返回格式: return (表达式);  或 return 表达式;  表达式就是返回值。

表达式的值类型应与函数返回值类型一致

int sum()

{

   int i, tot = 0;

   char key;

   key = getchar();

   if(key != '0' key != '1')

       return(-1);

   for(i = (key == '0') ? 2 : 1 ; i <= 100; i++)

       tot += i;

   return (tot);

}


Ⅲ.有参数无返回值函数

函数声明:void 函数名(类型符1 形参名1,类型符2 形参符2,...类型符n 形参名n);  或 void 函数名(类型符1,类型符2,...类型符n);

主要是根据形参的值来进行某种事务的处理,灵活性比无参数的函数强,更能提现调用函数和使用函数之间的数据联系

函数调用:函数名(实参1,实参2,...实参n); 实参可以是常量、变量、表达式、函数等。

实参列表中的实参与函数定义时的形参数量相同、类型相符

实参的值在赋给形参时,他的对应关系是从左往右,一一对应   实参1 -> 形参1

#include <stdio.h>

void compare(int a, int b);  //函数的原型声明

void main()

{

   int i = 2;

   compare i, i++; // i为实参

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

}

void compare(int a, int b)

{

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

   if(a > b)

       printf("a>b\n");

   else

       if(a == b)

           printf("a=b\n");

       else

           printf("a<b\n");

}


Ⅳ.有参数有返回值函数

函数声明: 返回值类型符 函数名(类型符1 形参1,类型符2 形参2,...类型符n 形参n);

或  返回值类型符 函数名(类型符1,类型符2...类型符n); 

根据形参的值来进行某种事务的处理,调用时可将处理后的结果值返回给调用函数。最能体现调用函数与被调函数之间的数据联系

函数调用:函数名(实参1,实参2,...实参n); 或者 变量名 = 函数名(实参1,...实参2,..实参n);

#include <stdio.h>

int max(int a, int b);  //函数的原型声明

{

   int a, b, c;

   scanf("%d%d", &a, &b);

   c = max(a, b); //函数的调用(a、b为实参)

   printf("the biggest number is : %d\n ", c);

}

int max(int a, int b) //函数的定义

{

   return (a > b ? a : b);

}


函数调用

①函数语句 例 printstar();  printf("Hello World! \n");

②函数表达式  例  m = max(a, b) * 2;

③函数参数 例 printf("%d", max(a,b));  m=max(a, max(b, c));

对于被调用的要求

①必须是已存在的函数

②库函数:#include <*.h>

③用户自定义函数: 函数类型说明

函数说明:

一般形式: 函数类型  函数名(形参类型 [形参名] ...); || 函数类型  函数名();

作用:告诉编译系统函数类型、参数个数及类型、以及检验

函数定义与函数说明不同。函数定义在函数外,而函数说明在函数内/外。函数说明比函数定义多了函数体。

而 在下列情况下可不作函数说明:

①若函数返回值是char或int型 系统自动按int型处理

②被调用函数定义出现在主调函数之前




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值