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

Mục lục:

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

Video: Sự khác biệt giữa Cấu trúc và Liên minh trong C

Video: Sự khác biệt giữa Cấu trúc và Liên minh trong C
Video: Đầu tư forex | Cấu tạo MT4 - Điểm khác biệt giữa MT4 và Tradingview - Nên dùng MT4 hay Tradingview 2024, Tháng bảy
Anonim

Sự khác biệt chính - Cấu trúc so với Liên minh trong C

Mảng là một dữ liệu có cấu trúc được ngôn ngữ C hỗ trợ. Một mảng có thể được sử dụng để lưu trữ các phần tử dữ liệu cùng kiểu. Nếu có một câu lệnh dưới dạng int mark [10]; thì dấu là một mảng có thể lưu trữ mười dấu và tất cả chúng đều là số nguyên. Đôi khi nó được yêu cầu lưu trữ các phần tử dữ liệu thuộc các kiểu 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, phòng ban, tuổi, v.v. Chúng thuộc các kiểu dữ liệu khác nhau. Vì vậy, cần phải có một phương pháp để lưu trữ các phần tử dữ liệu khác nhau như một đơn vị duy nhất. Cấu trúc và Unions trong C được sử dụng để lưu trữ các phần tử dữ liệu thuộc các kiểu khác nhau trong cùng một vị trí bộ nhớ. Một cấu trúc và một liên minh 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 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 một biến liên hợp là bộ nhớ cần thiết cho phần tử lớn nhất trong liên hợp. Đó là sự khác biệt chính giữa cấu trúc và liên minh 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 hợp trong C.

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 nhiều kiểu khác nhau. Một cấu trúc có thể đại diện cho các bản ghi. 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 nén thành một đơn vị duy nhất 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 kiểu dữ liệu dẫn xuất struct Student.

struct Sinh viên {

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 Student student1, student2, student3;

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 structure_variable_name. Tên thành viên. Nếu người lập trình muốn truy cập vào 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 cấu trúc.

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

Hình 01: Chương trình C với 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 kiểu cấu trúc được khai báo trong chương trình chính. Chúng đượ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. Tên "Ann" 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.

Dung lượng bộ nhớ cần thiết để lưu một biến cấu trúc là tổng dung lượng 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 24 byte là tổng dung lượng bộ nhớ mà cấu trúc yêu cầu.

Union trong C là gì?

Một union là kiểu dữ liệu do người dùng định nghĩa trong C. Nó giúp lưu trữ các kiểu dữ liệu khác nhau trong cùng một vị trí bộ nhớ. Một 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 mỗi một trong số chúng, một liên hợp có thể được sử dụng để thu gọn tất cả các kiểu dữ liệu khác nhau thành một đơn vị bằng cách sử dụng liên hợp. Nó được định nghĩa bằng cách sử dụng từ khóa ‘union’. Sau đây tạo một Sách liên kết dữ liệu dẫn xuất.

unionBook {

tên char [20];

giá gấp đôi;

};

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

đoàn Book book1, book2;

Có hai phương pháp để truy cập 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 cách sử dụng union_variable_name. Tên thành viên. Nếu người lập trình muốn truy cập vào tên của book1, 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 cùng đoàn.

Sự khác biệt giữa cấu trúc và liên minh trong C_ Hình 02
Sự khác biệt giữa cấu trúc và liên minh trong C_ Hình 02

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

Theo chương trình trên, Sách là đoàn thể. Book1 là một biến kiểu liên hợp. Tên và giá là các giá trị được chỉ định. Trong liên minh, chỉ có thể truy cập một trong các thành viên của nó 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 được in đúng cách nhưng giá trị được in đúng cách.

Sự khác biệt chính giữa Cấu trúc và Liên minh trong C
Sự khác biệt chính giữa Cấu trúc và Liên minh trong C

Hình 03: Chương trình C được sửa đổi với liên minh

Theo chương trình trên, Sách là đoàn thể. Book1 và book2 là các biến kiểu liên 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 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 một liên hợp 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á. Vì vậy, phân bổ bộ nhớ cho liên hiệp là 20 byte.

Sự tương đồng giữa Cấu trúc và Liên minh trong C là gì?

  • Cả Cấu trúc và Liên hợp trong C đều là kiểu dữ liệu do người dùng xác định.
  • Cả Cấu trúc và Liên hợp trong C đều có thể được sử dụng để lưu trữ các kiểu 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 so với Liên minh trong C

Structure 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 thuộc các kiểu khác nhau 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 thuộc các loại khác nhau 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ỉ có thể truy cập một trong các thành viên của nó 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.
Phân bổ bộ nhớ
Bộ nhớ cần thiết để lưu 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. Bộ nhớ cần thiết để lưu một biến liên hợp là bộ nhớ cần thiết cho phần tử lớn nhất trong liên hợp.
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 hợp là "union".

Tóm tắt - Cấu trúc so với Liên minh trong C

Một mảng được sử dụng để lưu trữ các phần tử dữ liệu cùng kiểu. Đôi khi cần phải lưu trữ các phần tử dữ liệu thuộc nhiều kiểu 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 hiệp để thực hiện nhiệm vụ này. Cả hai đều là kiểu dữ liệu do người dùng xác định. 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. Bộ nhớ cần thiết để lưu một biến liên hợp là bộ nhớ cần thiết cho phần tử lớn nhất trong liên hợp. Đây là sự khác biệt giữa cấu trúc và liên hiệp trong C.

Đề xuất: