ฟังก์ชันใน C แบ่งเป็น 4 ประเภท ตาม มี/ไม่มี Argument** และ มี/ไม่มี Return Value**
ตารางสรุป 4 ประเภท
| ประเภท | Argument | Return | รูปแบบ |
|---|---|---|---|
| 1. ไม่มี Argument, ไม่มี Return | ❌ | ❌ | void func(void) |
| 2. ไม่มี Argument, มี Return | ❌ | ✅ | int func(void) |
| 3. มี Argument, ไม่มี Return | ✅ | ❌ | void func(int, int) |
| 4. มี Argument, มี Return | ✅ | ✅ | int func(int, int) |
1. ไม่มี Argument, ไม่มี Return
ทำงานอิสระ ไม่รับค่า ไม่ส่งค่า ใช้สำหรับงานที่ทำซ้ำ เช่น แสดงเมนู
#include <stdio.h>
void sum() {
int a, b, c;
printf("Enter 2 numbers: ");
scanf("%d %d", &a, &b);
c = a + b;
printf("Sum = %d\n", c);
}
int main() {
sum(); // เรียกใช้
return 0;
}
2. ไม่มี Argument, มี Return
คำนวณ/รับค่าเองในฟังก์ชัน ส่งผลลัพธ์กลับ
#include <stdio.h>
int sum() {
int a, b, c;
printf("Enter 2 numbers: ");
scanf("%d %d", &a, &b);
c = a + b;
return c;
}
int main() {
int result = sum();
printf("Sum = %d\n", result);
return 0;
}
3. มี Argument, ไม่มี Return
รับค่ามาประมวลผล แสดงผล/แก้ไขค่าโดยตรง (ถ้าเป็น Pointer)
#include <stdio.h>
void sum(int a, int b) {
int c = a + b;
printf("Sum = %d\n", c);
}
int main() {
int a, b;
printf("Enter 2 numbers: ");
scanf("%d %d", &a, &b);
sum(a, b); // ส่งค่าเข้าไป
return 0;
}
4. มี Argument, มี Return (พื้นฐานที่สุด)
รับค่า ประมวลผล ส่งผลลัพธ์กลับ - ใช้กันมากที่สุด
#include <stdio.h>
int sum(int a, int b) {
return a + b;
}
int main() {
int a, b, c;
printf("Enter 2 numbers: ");
scanf("%d %d", &a, &b);
c = sum(a, b);
printf("Sum = %d\n", c);
return 0;
}
ผลลัพธ์ (ทุกตัวอย่าง)
Enter 2 numbers: 10 20 Sum = 30
การเลือกใช้ประเภทไหน?
| สถานการณ์ | ประเภทที่เหมาะสม |
|---|---|
| ทำงานคงที่ ไม่ต้องข้อมูลนำเข้า | Type 1: void func(void) |
| คำนวณค่าคงที่/สุ่ม/Input เอง | Type 2: int func(void) |
| ประมวลผลข้อมูลที่ส่งมา แสดงผลทันที | Type 3: void func(args) |
| คำนวณและส่งค่ากลับเพื่อนำไปใช้ต่อ | Type 4: int func(args) ⭐ |
Function Prototype (Declaration)
ประกาศ Prototype ก่อน main() เพื่อให้ Compiler ตรวจสอบ Type Checking
// Prototype
void sum(void);
int sum(void);
void sum(int, int);
int sum(int, int);
// Definition อยู่หลัง main() ก็ได้