Trong một trong những hướng dẫn về dòng lệnh trước đây của chúng tôi, chúng tôi đã đề cập đến khái niệm về Cấu trúc. Sử dụng các ví dụ dễ hiểu, chúng tôi đã thảo luận về những điều cơ bản như cấu trúc là gì và tại sao chúng lại cần thiết. Mở rộng thêm về điều đó, trong hướng dẫn này, chúng tôi sẽ thảo luận về cách cấu trúc và hàm có thể được sử dụng cùng nhau.
Vì vậy, ở đây, từ khóa struct - bắt buộc nếu bạn đang định nghĩa một cấu trúc trong C - biểu thị phần mở đầu của khai báo. Nó được theo sau bởi một thẻ hoặc bạn có thể nói tên của cấu trúc. Sau đó, bên trong dấu ngoặc, bạn có hai biến số nguyên, được nhóm lại với nhau như một phần của cấu trúc này.
Để sử dụng cấu trúc này, trước tiên bạn cần định nghĩa thể hiện hoặc đối tượng của nó. Bạn có thể thực hiện theo cách sau:
Và sau đó các thành viên cấu trúc có thể được truy cập theo cách sau:
Bây giờ, đến với các hàm, một hàm có thể trả về các cấu trúc cũng như chấp nhận các cấu trúc dưới dạng các đối số. Đây là một ví dụ:
Vì vậy, ở đây, trong ví dụ này, chúng ta có một hàm 'fill' chấp nhận hai số nguyên, xử lý chúng như mã và độ tuổi, điền vào một cấu trúc dựa trên thông tin này và trả về cấu trúc theo giá trị cho người gọi hàm.
Bây giờ, như tôi đã đề cập trước đó trong một câu lệnh ở trên, các cấu trúc cũng có thể được truyền dưới dạng đối số hàm. Sau đây là một ví dụ, trong đó hàm 'fill' chấp nhận cấu trúc 'emp_details' làm đối số.
Và đây là đầu ra trong trường hợp của tôi:
Tiếp tục, giống như các biến thông thường, mảng, v.v., cũng có thể có các con trỏ đến các cấu trúc. Sau đây là một ví dụ:
Như thường lệ, các con trỏ rất hữu ích trong trường hợp kích thước cấu trúc lớn và bạn đang gửi nó dưới dạng đối số cho một hàm. Về mặt lý tưởng, đây là cách bạn có thể truy cập các biến cấu trúc thông qua các đối tượng con trỏ:
Nhưng để đơn giản, C cho phép bạn bỏ qua * và . và sử dụng '->' thay thế. Sau đây là một ví dụ:
Sau đây là một ví dụ sử dụng con trỏ cấu trúc:
Mặc dù đây là cùng một ví dụ mà chúng ta đã sử dụng trước đó, nhưng những thay đổi - vì chúng ta đang sử dụng con trỏ cấu trúc hiện tại - được tô đậm.
Cấu trúc và hàm trong ngôn ngữ lập trình C
Trước khi bắt đầu, chúng ta hãy nhanh chóng làm mới cách khai báo cấu trúc. Đây là một ví dụ:
Mã:
struct emp_details {
int emp_code;
int emp_age;
};
Để sử dụng cấu trúc này, trước tiên bạn cần định nghĩa thể hiện hoặc đối tượng của nó. Bạn có thể thực hiện theo cách sau:
Mã:
emp_details obj;
Mã:
obj.emp_code
obj.emp_age
Mã:
#include
struct emp_details {
int emp_code;
int emp_age;
};
struct emp_details fill(int code, int age)
{
struct emp_details obj;
obj.emp_code = code;
obj.emp_age = age;
return obj;
}
int main()
{
int x,y;
printf("Nhập mã nhân viên: ");
scanf("%d", &x);
printf("\n Nhập tuổi nhân viên: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj = fill(x,y);
printf("\n Mã nhân viên và độ tuổi bạn nhập là: %d và %d", new_obj.emp_code, new_obj.emp_age);
return 0;
}
Bây giờ, như tôi đã đề cập trước đó trong một câu lệnh ở trên, các cấu trúc cũng có thể được truyền dưới dạng đối số hàm. Sau đây là một ví dụ, trong đó hàm 'fill' chấp nhận cấu trúc 'emp_details' làm đối số.
Mã:
#include
struct emp_details {
int emp_code;
int emp_age;
};
void fill(struct emp_details obj)
{
printf("\n Mã nhân viên và độ tuổi bạn nhập là: %d và %d", obj.emp_code, obj.emp_age);
}
int main()
{
int x,y;
printf("Nhập mã nhân viên: ");
scanf("%d", &x);
printf("\n Nhập độ tuổi của nhân viên: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj.emp_code = x;
new_obj.emp_age = y;
fill(new_obj);
return 0;
}
Mã:
Nhập mã nhân viên: 36
Nhập tuổi nhân viên: 29
Mã nhân viên và tuổi bạn nhập là: 36 và 29
Mã:
struct emp_details *ptr;
Mã:
(*ptr).emp_code
(*ptr).emp_age
Mã:
ptr->emp_code
ptr->emp_age
Mã:
#include
struct emp_details {
int emp_code;
int emp_age;
};
void fill(struct emp_details [B]*obj[/b])
{
printf("\n Mã nhân viên và độ tuổi bạn nhập là: %d và %d", [B]obj->emp_code[/b], [B]obj->emp_age[/b]);
}
int main()
{
int x,y;
printf("Nhập nhân viên code: ");
scanf("%d", &x);
printf("\n Nhập tuổi của nhân viên: ");
scanf("%d", &y);
struct emp_details new_obj;
new_obj.emp_code = x;
new_obj.emp_age = y;
fill([B]&new_obj[/b]);
return 0;
}