ฟังก์ชันเรียกได้ 2 แบบ: Call by value และ Call by reference
- ถ้าพารามิเตอร์จริงไม่ควรเปลี่ยนในฟังก์ชันที่เรียก ใช้ pass by value
- ถ้าต้องการให้ค่าพารามิเตอร์จริงเปลี่ยน ใช้ pass by reference
- ถ้าต้องการคืนค่ามากกว่า 1 ค่า ใช้ call by reference ส่งค่ากลับทางอ้อม
ตัวอย่างโค้ด
สาธิตการคืนค่าหลายค่าด้วยพอยน์เตอร์:
#include <stdio.h>
void areaperi(int, int*, int*);
int main() {
int r;
float a, p;
printf("enter radius of circle:\n");
scanf("%d", &r);
areaperi(r, &a, &p);
printf("area=%f\n", a);
printf("perimeter=%f", p);
return 0;
}
void areaperi(int x, int *p, int *q) {
*p = 3.14 * x * x;
*q = 2 * 3.14 * x;
}ผลลัพธ์
Enter radius of circle: 5 Area=78.50000 Perimeter=31.40000
หมายเหตุ
- พอยน์เตอร์มีชนิดข้อมูล (pointer to specific type)
- ขนาดพอยน์เตอร์เท่ากันทุกตัว (เท่ากับ int)
- พอยน์เตอร์เก็บที่อยู่หน่วยความจำ แต่ขนาดตัวแปรที่ชี้อาจต่างกัน