ฟังก์ชันคือกลุ่มคำสั่งที่ทำงานร่วมกันเพื่อทำหน้าที่หนึ่ง ทุกโปรแกรม C มีฟังก์ชันอย่างน้อยหนึ่งคือ main() และโปรแกรมง่ายๆ สามารถกำหนดฟังก์ชันเพิ่มเติมได้
คุณสามารถแบ่งโค้ดเป็นฟังก์ชันแยกกันได้ การแบ่งขึ้นอยู่กับคุณ แต่วิธีที่สมเหตุสมผลคือแต่ละฟังก์ชันทำหน้าที่เฉพาะเจาะจง
Function declaration บอก compiler เกี่ยวกับชื่อ ฟังก์ชัน return type และ parameters Function definition ให้ body จริงของฟังก์ชัน
C standard library มี built-in functions มากมาย เช่น strcat() ต่อสตริง memcpy() คัดลอกหน่วยความจำ และอื่นๆ
ฟังก์ชันอาจเรียกว่า method, sub-routine, procedure ฯลฯ
การกำหนดฟังก์ชัน
รูปแบบทั่วไปของ function definition ใน C:
return_type function_name( parameter list ) { body of the function }Function definition ประกอบด้วย function header และ function body ส่วนประกอบ:
Return Type — ชนิดข้อมูลของค่าที่คืน ใช้ void หากไม่คืนค่า
Function Name — ชื่อจริงของฟังก์ชัน ชื่อและ parameter list รวมเป็น function signature
Parameters — placeholder เมื่อเรียกฟังก์ชันจะส่งค่าเข้าไป เรียกว่า actual parameter หรือ argument parameter list อ้างถึง type, order, จำนวน parameters parameters เป็น optional
Function Body — ชุดคำสั่งกำหนดว่าฟังก์ชันทำอะไร
ตัวอย่างโค้ด
/* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; }Function Declaration
Function declaration บอก compiler ชื่อฟังก์ชันและวิธีเรียก body สามารถกำหนดแยกได้
return_type function_name( parameter list );
สำหรับ max() ข้างต้น declaration คือ:
int max(int num1, int num2);
ชื่อพารามิเตอร์ไม่สำคัญใน declaration ต้องแค่ type ดังนี้จึงถูกต้อง:
int max(int, int);
Function Calling
เมื่อสร้างฟังก์ชัน ให้ definition ของสิ่งที่ฟังก์ชันต้องทำ เพื่อใช้ ต้อง call ฟังก์ชันนั้น
เมื่อโปรแกรมเรียกฟังก์ชัน control จะถูกส่งไปที่ฟังก์ชันที่ถูกเรียก ฟังก์ชันทำงานและเมื่อถึง return statement หรือปิด brace จะส่ง control กลับ main program
การเรียกฟังก์ชัน: ส่งพารามิเตอร์ที่ต้องการพร้อมชื่อฟังก์ชัน หากคืนค่า สามารถเก็บค่าที่คืนมาได้
ตัวอย่างโค้ด
#include <stdio.h> /* function declaration */ int max(int num1, int num2); int main () { /* local variable definition */ int a = 100; int b = 200; int ret; /* calling a function to get max value */ ret = max(a, b); printf( "Max value is : %d\n", ret ); return 0; } /* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; }ผลลัพธ์
Max value is : 200