欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发系列----C语言(函数)

程序员文章站 2022-05-09 20:39:03
函数概述 1.为什么需要函数 当大型程序中,某个功能,会被反复利用,我们把这些功能【封装】成功能模块,称为函数。以后想使用这个功能,只需调用这个函数就可以了。使用函数可以降低开...

函数概述

1.为什么需要函数

当大型程序中,某个功能,会被反复利用,我们把这些功能【封装】成功能模块,称为函数。以后想使用这个功能,只需调用这个函数就可以了。使用函数可以降低开发成本,利于维护

2.函数的分类

库函数:由官方或者第三方库编写的函数,保存在动态库,静态库,甚至是开源代码。程序员可以直接调用。使用库函数时往往伴随着导入库或者导入头文件。如arc4random()在stdlib库中,需要头文件支持,通常不能修改。

自定义函数:我们自己根据项目需要写的函数。

3.函数由最简单的函数(无参数无返回值函数)、带参数和返回值的函数两类构成。

函数讲解

1.最简单的函数:左边的void(空),表示没有返回值,中间的func是标识符,表示【函数名】,右边括号里的void没有【参数】。声明和实现是创造一个函数,调用(使用)是使用函数。

//函数的声明

void func(void);

int main(int argc, const char * argv[]) {

    //函数的调用

    func();

    return 0;

}

//函数的实现

void func(void) {

    printf("hello world\n");

}

2.函数的传参

/* 如果函数在调用之前实现,就不需要声明
 * @param a叫做这个函数的形参,形参是变量。传参的过程a = 5,a=2就是把值赋给变量的过程。
*/
void func(int a) {
    for (int i = 0; i < a; i++) {
        printf("hello world\n");
    }
}

int main(int argc, const char * argv[]) {

    func(5);//值,函数的实参,实参是值
    func(2);
    return 0;

}

3.带返回值和带参数的函数:

//它的返回值是变量(int),参数列表是两个变量(int,int)
int addHT(int a,int b) {
    return a + b;
}

int main(int argc, const char * argv[]) {

    int a = 5;
    int b = 3;
    int c;

    //让c等于这个函数的返回值
    c = addHT(a, b);

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

    return 0;
}

4.作用域:变量的作用域(有效范围)是大括号之内,出了作用域就没有用了

void func(void) {
    int a;

    {
    int b;
    //只能在此大括号内对变量b进行操作
    }

    //只能在此大括号内对变量a进行操作
}

5.全局变量:声明在所有函数之外的变量,称为全局变量,作用域是从声明开始一直到文件尾。数据段的数据,默认为0

//全局变量,从声明开始一直到文件尾
int a;

void ret(void) {
    a = 5;
}

int main(int argc, const char * argv[]) {

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

    return 0;
}

6.静态变量:

①函数体内static变量的作用范围为该函数体,该变量只被分配一次,其值在下次调用的时候扔维持上次调用的值。

②模块内的static全局变量可以被模块内的所有函数访问,但不能被模块外的其他函数访问。

③模块内的static函数只能被该模块内部的其他函数调用,这个函数的使用范围被限制在该模块内部。

static int situationNum = 5;

void test(void) {

    static int partNum = 5;

    partNum++;
    situationNum++;

    printf("testPartNum = %d\n",partNum);
    printf("testSituationNum = %d\n",situationNum);

}

int main(int argc, const char * argv[]) {

    test();
    test();

    situationNum++;

    printf("mainSituationNum = %d\n",situationNum);

    return 0;

}

小练习

1.编写函数,求4个数的平均值。

2.编写函数,打印三个数的最大值 。(三目运算符: a>b?a:b的含义是如果a>b是a否则是b)。

参考答案(一万个读者有一万个哈姆雷特,一万个程序员有一万种编码风格,答案仅供参考)

1.编写函数,求4个数的平均值。

void mean(int a,int b,int c,int d) {

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

}

int main(int argc, const char * argv[]) {

    mean(10,20,30,40);

    return 0;

}

2.编写函数,打印三个数的最大值 。(三目运算符: a>b?a:b的含义是如果a>b是a否则是b)。

void maxOfThree(int a,int b,int c) {

    printf("%d",(a>b?a:b)>c?(a>b?a:b):c);

}

int main(int argc, const char * argv[]) {

    int a = 5;

    double b = 15.4;

    float c = 0.003;

    maxOfThree(a, b, c);

    return 0;

}