函数(Day-5)
发布日期:2022-02-08 18:03:20 浏览次数:38 分类:技术文章

本文共 2988 字,大约阅读时间需要 9 分钟。

1.函数定义及声明:

  1. 定义:函数是具有特定功能的代码段,某一段代码组合实现某个功能。 例如:main(主)函数
  2. 函数调用:通过名字调用函数
    易于维护,可读性好
  3. 声明:

    返回值类型 函数名(形式参数列表){
    功能代码块;
    return 返回值;// 无返回值时,返回值类型为void
    }
    返回值类型:int void char float…….
    函数名:驼峰命名法 sayHi
    形参:函数的材料
    注意:不同的函数中可以使用相同的变量名

    一个函数只有一个返回值,如果返回值类型不为空,切记函数写return语句。

    如果实际返回值类型和声明的类型不一样,将会强制转换成声明的类型。

  4. 定义函数的四种类型:
    无返回值,无参数 无返回值,有参数 有返回值,无参数 有返回值,有参数(参数指形参哦)
    函数中,return后面的语句并不会被执行

2.函数调用:

  1. 调用函数时,无论有无参数都要记得写(),实际参数(实参)可以是:常量 变量 表达式

    普通变量传递是拷贝的状态,不是直接传递。

  2. 函数的三部分:声明,定义,调用

    函数声明:指定函数的名字,返回值类型,参数
    如果函数定义出现在主调函数之前,可以省略函数声明
    如果函数定义出现在主调函数之后,必须要声明函数

    例题一:输入日期,判断一年中的第几天

    方法有各种各样的,本人只是写了两种情况而已~~
    方法一:(方法比较笨!!!)

int dayOfYear(int year, int month, int day){    int days = 0, mark = 0;    if (year % 400 == 0  || (year % 4 == 0 && year % 100 != 0))        mark = 1; // 闰年 29天    else        mark = 0; // 平年 28天    switch (month) {        case 1:            days = day;            break;        case 2:            days = 31 + day;            break;        case 3:            days = day + 59;            break;        case 4:            days = 90 + day;            break;        case 5:            days = 120 + day;            break;        case 6:            days = 151 + day;            break;        case 7:            days = 181 + day;            break;        case 8:            days = 212 + day;            break;        case 9:            days = 243 + day;            break;        case 10:            days = 273 + day;            break;        case 11:            days = 304 + day;            break;        case 12:            days = 334 + day;            break;        default:            break;    }    if(mark == 1 && month > 2)        return days + 1;    else        return days;}

方法二:(这个比较简单,易理解)

int days[12] = {
31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31}; int sum = 0; for (int i = 0; i < month-1; i ++) { sum += days[i]; } sum += day; return sum;}

例题2:求三个数中的中间数

同样提供两种方法:
方法一:

int midValue(int a, int b, int c){    int mid = 0;    if ((a >= b && a <= c) || (a >= c && a <= b)){        mid = a;        return mid;    }    else if((b >= c && b <= a) || (b >= a && b <= c)){        mid = b;        return mid;    }    else {        mid = c;        return mid;    }}

方法二:

int midValue(int a, int b, int c){    int max = 0, min = 0;    max = a > b ? a : b;    max = max > c  ? max : c;    min = a < b ? a : b;    min = min < c  ? min : c;    return a + b + c - max - min;}
  1. 导入自己定义的函数用:“”

    导入系统的函数用:<>
    .h文件:写声明函数
    .m文件实现函数内容

  2. 数组作为形参:

    数组作为函数的参数时,函数一般情况下需要设置两个形参,一个存储数组名,一个存储数组元素个数
    函数声明形式: 返回值类型 函数名(int a[], int count) // [ ]中不写东西
    函数调用形式:数组名作为参数,传入的其实是数组的首地址
    形参和实参操作的是同一个内存空间

  3. 函数嵌套:
    函数定义不可以嵌套,但是可以嵌套调用
  4. 函数递归:自己调用自己 但是递归函数一定要有出口。

变量的作用域

  1. 作用域(生命周期):变量的有效范围 (根据所定义的大括号的范围)
    分为:全局变量和局部变量
    局部变量:在函数体内部定义的变量
    全局变量:在函数体外定义的变量 例:在main函数外部定义变量
    for循环里面定义的变量,只限在for循环内部使用,
    例(好好看看这个例子,要明白):
int i = 5;int main() {    int i = 10;    printf("%d  ", i);    return 0;}
打印结果为:10

在其他的.m文件中在变量前写extern int ; 就可以使用在main外定义的全局变量,还可以进行修改,修改之后,全局变量的改变。如果不想让其他文件使用全局变量,则可以使用关键字static: static int i; 则这个i只能在main.m文件里面使用。

转载地址:https://blog.csdn.net/Evelynzn/article/details/48368441 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:结构体(Day-6)
下一篇:指针(Day-7)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月24日 05时08分43秒