你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發系列----C語言(函數)

iOS開發系列----C語言(函數)

編輯:IOS開發綜合

函數概述

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;

}
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved