Có ba cách để truyền giá trị của cấu trúc từ hàm này sang hàm khác:
- Truyền từng thành viên riêng lẻ làm đối số.
- Truyền toàn bộ cấu trúc làm đối số.
- Truyền địa chỉ của cấu trúc làm đối số.
Hãy xem cách truyền từng thành viên của cấu trúc làm đối số cho hàm.
- Mỗi thành viên được truyền làm đối số trong lời gọi hàm.
- Chúng được thu nhận độc lập trong các biến thông thường trong tiêu đề hàm.
Ví dụ 1
Chương trình C minh họa truyền từng đối số của cấu trúc cho hàm:
#include <stdio.h>
struct date {
int day;
int mon;
int yr;
};
main() {
struct date d = {02, 01, 2010};
display(d.day, d.mon, d.yr); // truyền từng thành viên làm đối số
getch();
}
display(int a, int b, int c) {
printf("Ngày = %d\n", a);
printf("Tháng = %d\n", b);
printf("Năm = %d\n", c);
}
Kết quả
Ngày = 2 Tháng = 1 Năm = 2010
Ví dụ 2
Ví dụ khác minh họa truyền từng đối số của cấu trúc cho hàm:
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
float percentage;
char temp;
};
struct student record; // Khai báo toàn cục cấu trúc
int main() {
record.id = 1;
strcpy(record.name, "Raju");
record.percentage = 86.5;
structure_demo(record.id, record.name, record.percentage);
return 0;
}
void structure_demo(int id, char name[], float percentage) {
printf("ID là: %d\n", id);
printf("Tên là: %s\n", name);
printf("Phần trăm là: %.2f\n", percentage);
}
Kết quả
ID là: 1 Tên là: Raju Phần trăm là: 86.50