Sự khác biệt giữa cấu trúc và liên kết trong C

Sự khác biệt chính - Cấu trúc vs liên hiệp trong C
 

Một mảng là một dữ liệu có cấu trúc được hỗ trợ bởi ngôn ngữ C. Một mảng có thể được sử dụng để lưu trữ các thành phần dữ liệu cùng loại. Nếu có một tuyên bố là int mark [10]; sau đó nhãn hiệu là một mảng có thể lưu trữ mười điểm và tất cả chúng là số nguyên. Đôi khi, nó được yêu cầu lưu trữ các thành phần dữ liệu thuộc các loại khác nhau trong cùng một vị trí bộ nhớ. Ví dụ, một nhân viên có thể có ID nhân viên, tên, bộ phận, tuổi, v.v ... Họ thuộc các loại dữ liệu khác nhau. Do đó, cần có một phương pháp để lưu trữ các yếu tố dữ liệu khác nhau dưới dạng một đơn vị. Cấu trúc và liên kết trong C được sử dụng để lưu trữ các thành phần dữ liệu thuộc các loại khác nhau trong cùng một vị trí bộ nhớ. Cấu trúc và liên kết tương tự nhau nhưng chúng chủ yếu phân biệt do cấp phát bộ nhớ. Bộ nhớ cần thiết để lưu trữ một biến cấu trúc là tổng của kích thước bộ nhớ của tất cả các thành viên. Bộ nhớ cần thiết để lưu trữ một biến union là bộ nhớ cần thiết cho phần tử lớn nhất trong union. Đó là sự khác biệt chính giữa cấu trúc và liên kết trong C. Bài viết này thảo luận về sự khác biệt giữa cấu trúc và liên kết trong C.

NỘI DUNG

1. Tổng quan và sự khác biệt chính
2. Cấu trúc trong C là gì
3. Liên minh trong C là gì
4. Điểm tương đồng giữa cấu trúc và liên kết trong C
5. So sánh cạnh nhau - Cấu trúc so với Liên minh trong C ở dạng bảng
6. Tóm tắt

Cấu trúc trong C là gì?

Cấu trúc là kiểu dữ liệu do người dùng định nghĩa trong C. Nó giúp kết hợp các mục dữ liệu thuộc các loại khác nhau. Một cấu trúc có thể đại diện cho hồ sơ. Một sinh viên có thể có student_id, student_name, v.v. Thay vì lưu trữ từng biến riêng biệt, tất cả các mục dữ liệu khác nhau này có thể được thu gọn thành một đơn vị bằng cách sử dụng một cấu trúc. Nó được định nghĩa bằng cách sử dụng từ khóa 'struct'. Trong một cấu trúc, tất cả các thành viên của nó có thể được truy cập bất cứ lúc nào. Sau đây tạo ra kiểu dữ liệu có nguồn gốc struct Student.

sinh viên cấu trúc

intstudent_id;

char student_name [20];

;

Đối với cấu trúc trên, các biến có thể được khai báo như sau.

struct Sinh viên1, sinh viên2, sinh viên3;

Có hai phương pháp để truy cập các thành viên của cấu trúc. Đó là bằng cách sử dụng toán tử thành viên (.) Và toán tử con trỏ cấu trúc (->). Các thành viên có thể được truy cập bằng struct_variable_name. Tên thành viên. Nếu lập trình viên muốn truy cập tên của sinh viên 2, thì anh ta có thể viết câu lệnh dưới dạng printf (student2.student_namename);

Tham khảo chương trình dưới đây với một cấu trúc.

Hình 01: Chương trình C có cấu trúc

Theo chương trình trên, Sinh viên là một cấu trúc. Nó chứa student_id và student_name. Hai biến của kiểu cấu trúc được khai báo trong chương trình chính. Họ được gọi là student1 và student2. Id của student1 được gán với giá trị 1 bằng cách sử dụng toán tử thành viên là student1.student_id = 1. Cái tên Ann Ann tinh là một chuỗi. Do đó, nó được sao chép vào thành viên student_name bằng cách sử dụng hàm sao chép chuỗi strcpy. Id và tên được gán cho student2 theo cách tương tự. Cuối cùng, các giá trị đó được in bằng toán tử thành viên.

Lượng bộ nhớ cần thiết để lưu trữ một biến cấu trúc là tổng kích thước bộ nhớ của tất cả các thành viên. Student_id chứa 4 byte và student_name chứa 20 byte (mỗi byte cho một ký tự). Tổng số 24 byte là tổng kích thước bộ nhớ theo yêu cầu của cấu trúc.

Liên minh trong C là gì?

Liên minh là loại dữ liệu do người dùng định nghĩa trong C. Nó giúp lưu trữ các loại dữ liệu khác nhau trong cùng một vị trí bộ nhớ. Sách có thể có các thuộc tính như book_name, price, v.v. Thay vì tạo các biến cho từng loại, một liên kết có thể được sử dụng để nén tất cả các loại dữ liệu khác nhau thành một đơn vị bằng cách sử dụng liên kết. Nó được định nghĩa bằng cách sử dụng từ khóa 'union'. Sau đây tạo ra một liên minh dữ liệu dẫn xuất.

unionBook

tên char [20];

giá gấp đôi;

;

Đối với liên kết trên, các biến có thể được khai báo như sau.

sách công đoàn1, sách2;

Có hai phương pháp để tiếp cận các thành viên của công đoàn. Đó là bằng cách sử dụng toán tử thành viên (.) Và toán tử con trỏ cấu trúc (->). Các thành viên có thể được truy cập bằng union_variable_name. Tên thành viên. Nếu lập trình viên muốn truy cập tên của cuốn sách1, thì anh ta có thể viết câu lệnh dưới dạng printf (book1.name);

Tham khảo chương trình dưới đây với một công đoàn.

Hình 02: Chương trình C sử dụng union

Theo chương trình trên, Sách là một liên minh. Cuốn sách1 là một biến của loại kết hợp. Tên và giá được gán giá trị. Trong liên minh, chỉ một thành viên của nó có thể được truy cập tại một thời điểm và tất cả các thành viên khác sẽ có giá trị rác. Giá trị của id không in đúng nhưng giá trị in đúng.

Hình 03: Chương trình C đã sửa đổi với union

Theo chương trình trên, Sách là một liên minh. Book1 và book2 là các biến loại kết hợp. Đầu tiên, giá trị cho tên book1 được gán và nó được in. Sau đó, giá trị cho tên book2 được gán và nó được in. Tất cả các thành viên in chính xác bởi vì một thành viên đang được sử dụng tại một thời điểm. Bộ nhớ cần thiết để lưu trữ một liên minh là bộ nhớ cần thiết cho phần tử lớn nhất của liên minh. Trong chương trình trên, biến tên là 20 byte. Nó lớn hơn giá cả. Vì vậy, cấp phát bộ nhớ cho liên minh là 20 byte.

Điểm tương đồng giữa cấu trúc và liên kết trong C là gì?

  • Cả Cấu trúc và Liên minh trong C đều là các kiểu dữ liệu do người dùng định nghĩa.
  • Cả Cấu trúc và Liên kết trong C đều có thể được sử dụng để lưu trữ các loại dữ liệu khác nhau trong cùng một vị trí bộ nhớ.

Sự khác biệt giữa cấu trúc và liên minh trong C là gì?

Cấu trúc vs Liên minh trong C

Cấu trúc là kiểu dữ liệu do người dùng định nghĩa bằng ngôn ngữ C cho phép kết hợp dữ liệu của các loại khác nhau lại với nhau. Union là kiểu dữ liệu do người dùng định nghĩa bằng ngôn ngữ C cho phép kết hợp dữ liệu của các loại khác nhau lại với nhau.
 Khả năng tiếp cận
Trong một cấu trúc, tất cả các thành viên của nó có thể được truy cập bất cứ lúc nào. Trong một liên minh, chỉ một thành viên của nó có thể được truy cập tại một thời điểm và tất cả các thành viên khác sẽ chứa các giá trị rác.
Cấp phát bộ nhớ
Bộ nhớ cần thiết để lưu trữ một biến cấu trúc là tổng của kích thước bộ nhớ của tất cả các thành viên. Bộ nhớ cần thiết để lưu trữ một biến union là bộ nhớ cần thiết cho phần tử lớn nhất trong union.
 Từ khóa
Từ khóa được sử dụng để xác định cấu trúc là 'struct'. Từ khóa được sử dụng để xác định liên minh là 'union'.

Tóm lược - Cấu trúc vs liên hiệp trong C

Một mảng được sử dụng để lưu trữ các thành phần dữ liệu cùng loại. Đôi khi cần lưu trữ các thành phần dữ liệu thuộc các loại khác nhau trong cùng một vị trí bộ nhớ. Ngôn ngữ lập trình C cung cấp cấu trúc và liên minh để hoàn thành nhiệm vụ này. Cả hai đều là kiểu dữ liệu do người dùng định nghĩa. Bộ nhớ cần thiết để lưu trữ một biến cấu trúc là tổng của kích thước bộ nhớ của tất cả các thành viên. Bộ nhớ cần thiết để lưu trữ một biến union là bộ nhớ cần thiết cho phần tử lớn nhất trong union. Đây là sự khác biệt giữa cấu trúc và liên kết trong C.

Tài liệu tham khảo:

1. Điểm, Hướng dẫn. Cấu trúc của Cấm trong C. Gian, Điểm hướng dẫn, ngày 15 tháng 8 năm 2017. Có sẵn tại đây 
2. Điểm, Hướng dẫn. Đoàn kết tại Cúc , Điểm hướng dẫn, ngày 15 tháng 8 năm 2017. Có sẵn tại đây