Cấu trúc và hàm trong C | Laptrinhcanban.com

Cấu trúc và hàm trong C

Cùng tìm hiểu về cấu trúc và hàm trong C. Bạn sẽ biết cách truyền một cấu trúc cho hàm trong C, cũng như cách trả về cấu trúc từ hàm trong C sau bài học này.

Ví dụ chúng ta có kiểu cấu trúc biểu diễn số phức trong C như sau:

typedef struct {
double re; /* Phần thực */
double im; /* Phần ảo */
} complex_t;

Chúng ta sẽ học cách truyền và nhận kiểu cấu trúc này trong hàm như sau:

Truyền cấu trúc cho hàm trong C

Chúng ta có thể truyền một thực thể tạo ra cấu trúc như một đối số của hàm trong C.

Ví dụ, chúng ta có thể sử dụng kiểu cấu trúc complex_t ở trên để tạo ra một thực thể, và sử dụng thực thể này như là một đối số và truyền nó vào hàm như sau:

#include <stdio.h>

//Khai báo cấu trúc biểu diễn số phức
typedef struct {
double re; /* Phần thực */
double im; /* Phần ảo */
} complex_t;

//Tạo hàm nhận và in thực thể của cấu trúc
void printComplex(complex_t c)
{
printf("%f + %f i\n", c.re, c.im);
}

int main(void){
//Tạo một thực thể từ cấu trúc
complex_t c = {1.2, 3.4};

//Truyền thực thể vào hàm
printComplex(c);
}

Kết quả:

1.200000 + 3.400000 i

Trả về cấu trúc từ hàm trong C

Ngoài cách truyền cấu trúc vào hàm thì chúng ta cũng có thể trả về cấu trúc từ hàm trong C. Đây là ưu điểm của cấu trúc khi sánh với mảng, vì vốn chúng ta không thể trả một mảng từ hàm.

Ví dụ cụ thể, chúng ta trả về một cấu trúc từ hàm như sau:

#include <stdio.h>

typedef struct {
double re; /* Phần thực */
double im; /* Phần ảo */
} complex_t;

//Tạo hàm nhận, tính toán và trả về thực thể của cấu trúc
complex_t addComplex(complex_t a, complex_t b){
complex_t c;

c.re = a.re + b.re;
c.im = a.im + b.im;

return c;
}

//Tạo hàm nhận và in thực thể của cấu trúc
void printComplex(complex_t c){
printf("%f + %f i\n", c.re, c.im);
}

int main(void){
complex_t a = {1.2, 3.4};
complex_t b = {5.6, 7.8};
complex_t c;

c = addComplex(a, b);
printComplex(c);

return 0;
}

Kết quả:

6.800000 + 11.200000 i

Truyền gián tiếp cấu trúc cho hàm trong C thông qua con trỏ

Ngoài cách sử dụng cấu trúc như là đối số và truyền trực tiếp một cấu trúc vào hàm để xử lý, chúng ta cũng có thể xử lý gián tiếp cấu trúc trong hàm thông qua con trỏ chỉ tới nó.

Chi tiết về phần này đã được Kiyoshi hướng dẫn cụ thể trong bài dưới đây, các bạn hãy tham khảo nhé.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn các bạn về cấu trúc và hàm trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.