精通學習C語言——函數(1)

函數是什麼⊙∀⊙?C語言的函數和其他語言的函數相似之處甚多,C中函數分爲庫函數和自定義函數,下面分別進行簡單介紹。

  1. 庫函數
    C語言中的庫函數,很大程度上解決了我們在編寫程序中的繁瑣步驟,例如經常會遇到的基本功能,開發過程中每個程序員都可能用到的,爲了支持可移植性和提高效率,所以就有了庫函數的產生,方便程序員進行開放。這裏有一個庫函數學習網址可以推薦:www.cplusplus.com 。
    C語言常用的庫函數包括,IO函數,字符串操作函數,字符操作函數,內存操作函數,時間函數,數學函數以及其他庫函數等。例如:
strcpy
char * strcpy(char * destination, const char * source);
memset
void * memset(void * prt, int value, size_t num);

需要注意的是在使用庫函數的時候,一定要引用include所對應的頭文件。

  1. 自定義函數
    因爲庫函數的侷限性,所以在開發的工程中,自定義函數更加重要。自定義函數和庫函數一樣,在設計的工程中要包含函數名,返回值類型和函數參數,因爲是程序員自己進行設計,所以有很大的發揮空間,不像庫函數一樣只能按規定調用。例如,我們寫一個簡單的函數進行舉例:
//寫一個函數可以找出兩個整數中的最大值
#include <stdio.h>
int get_max(int x, int y)//x和y爲函數接收的參數
{
    return (x > y) ? (x) : (y);//這裏寫了一個三目操作語句,進行判斷選擇,然後直接返回
}
int main()
{
    int num1 = 10;
    int num2 = 20;
    int max = get_max(num1, num2);//調用函數,需要傳參
    printf("max = %d\n",max);//printf就是一個庫函數,需要引用頭文件
    return 0;
}
  1. 函數的參數
    函數的參數分爲實際參數(實參)和形式參數(形參),實參即真實傳給的函數,例如常量,變量,表達式和函數等,無論實參是何種類型的量,在進行函數調用時,他們都必須有確定的值,以便把這些值傳送給形參。形參是指函數名後括號中的變量,因爲形式參數只有在函數被調用的過程中才會實例化(分配內存單元),所以叫形式參數,形參當函數調用完成之後就自動銷燬了,因此形參只在函數中才有效。上例中,get_max函數中x和y都是形參,main函數中傳給get_max的num1,num2都是實參。

  2. 函數的調用
    函數的調用又分爲傳值調用和傳址調用。傳值調用中,函數的形參和實參分別佔有不同內存塊,對形參的修改不會影響實參;而傳址調用中是吧函數外部創建變量的內存地址傳遞給函數參數的一種調用函數的方式,這種傳參方式可以讓函數和函數外邊的變量建立起真正的聯繫,也就是函數內部可以直接操作函數外部的變量。函數的調用方式又包含嵌套調用和鏈式訪問。

//嵌套調用
void new_line()
{
    printf("呵呵\n");
}
void three_line()
{
    int i = 0;
    for(i = 0; i < 3; i++)
    {
        new_line();
    }
}
int main()
{
    three_line();
    return 0;
}

//鏈式訪問
//把一個函數的返回值作爲另一個函數的參數
int main()
{
    char arr[20] = "hello";
    int ret = strlen(stract(arr,"world"));
    printf("%d\n",ret);
    return 0;
}
  1. 函數的聲明和定義
    函數聲明就是告訴編譯器有一個函數叫什麼,參數是什麼,返回類型是什麼,一般出現在函數的使用之前,要滿足先聲明後使用,通常情況要放在頭文件中。函數的定義就是指函數的具體實現,交代函數的功能實現。
//test.h的內容,放置函數的聲明
#ifndef __TEST_H__
#define __TEST_H__
//函數聲明
int Add(int x, int y);

#endif //__TEST_H__

//test.c的內容,放置函數的實現
#include "test.h"//引用頭文件
//函數Add的實現
int Add(int x, int y)
{
    return x + y;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章