Hàm có thể gọi bằng giá trị hoặc tham chiếu.
- Nếu tham số thực không thay đổi trong hàm gọi, truyền bằng giá trị.
- Nếu giá trị tham số thực phải thay đổi, dùng truyền tham chiếu.
- Nếu hàm trả về nhiều giá trị, trả gián tiếp bằng call-by-reference.
Ví dụ
Chương trình C minh họa trả về nhiều giá trị:
#include <stdio.h>
void main(){
void areaperi(int, int*, int*);
int r;
float a, p;
printf("Nhap ban kinh hinh tron:\n");
scanf("%d", &r);
areaperi(r, &a, &p);
printf("Dien tich = %f\n", a);
printf("Chu vi = %f", p);
}
void areaperi(int x, int *p, int *q){
*p = 3.14 * x * x;
*q = 2 * 3.14 * x;
}
Đầu ra
Kết quả chạy chương trình:
Nhap ban kinh: 5 Dien tich = 78.500000 Chu vi = 31.400000
Lưu ý
- Con trỏ có kiểu đi kèm. Không chỉ kiểu con trỏ, mà là con trỏ đến kiểu cụ thể.
- Kích thước mọi con trỏ giống nhau, bằng size của int.
- Mọi con trỏ giữ địa chỉ một ô nhớ, nhưng kích thước biến được tham chiếu có thể khác nhau.