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

Anonim

Cả hai cấu trúc và công đoàn là những kiểu dữ liệu người dùng định nghĩa trong ngôn ngữ C và theo khái niệm giống nhau, tuy nhiên, chúng vẫn khác nhau theo một số cách như cách bộ nhớ được cấp phát cho các thành viên của chúng. Họ được tuyên bố tương tự nhưng họ hoạt động khác nhau. Chúng cho phép người dùng kết hợp các loại dữ liệu khác nhau dưới một tên duy nhất. Mặc dù vị trí bộ nhớ riêng biệt được sử dụng cho mỗi thành viên khi tuyên bố biến cấu trúc, các thành viên khác nhau của một biến công đoàn chia sẻ cùng một vị trí bộ nhớ. Hãy nghiên cứu sự khác nhau giữa cấu trúc và công đoàn là chi tiết.

Cơ cấu là gì?

Cấu trúc chỉ là một kiểu dữ liệu người dùng xác định trong C cho phép người dùng kết hợp các loại dữ liệu các loại vào một kiểu duy nhất trong một khối bộ nhớ. Một cấu trúc có thể chứa cả hai kiểu dữ liệu đơn giản và phức tạp liên quan đến nhau, nếu không, sẽ không có ý nghĩa. Mỗi thành viên trong một cấu trúc nhận được vị trí bộ nhớ của riêng mình để nó có thể được truy cập và lấy ra bất cứ lúc nào.

Một cấu trúc được sử dụng khi nhiều dữ liệu cần nhóm như một thư mục chứa thông tin về nhiều thành viên trong một cuốn sách hoặc một sổ địa chỉ chứa tất cả thông tin về một địa chỉ liên lạc duy nhất, địa chỉ, số liên lạc, v.v … Địa chỉ của mỗi thành viên sẽ theo thứ tự tăng dần, nghĩa là bộ nhớ của mỗi thành viên sẽ bắt đầu ở các giá trị bù khác nhau. Thay đổi giá trị của một thành viên sẽ không ảnh hưởng đến các thành viên khác.

Từ khóa 'struct' được sử dụng để xác định cấu trúc các kiểu dữ liệu khác nhau dưới một tên duy nhất. Ví dụ: nếu bạn muốn tạo một cơ sở dữ liệu nhân viên, bạn cần phải lưu tên, tuổi, số điện thoại, và mức lương của nhân viên dưới một thực thể duy nhất. Điều này được thực hiện bằng từ khóa 'struct', sau đó nói với trình biên dịch rằng một cấu trúc đã được khai báo.

struct employee {

tên chuỗi;

tuổi lứa tuổi;

dây điện thoại;

lương theo chuỗi;

} emp1, emp2;

Ở đây, 'employee' là tên của cấu trúc và hai biến 'emp1' và 'emp2' được tạo ra từ kiểu 'employee'. Dấu ngoặc đóng phải được theo sau bởi dấu chấm phẩy (;).

Thành viên của một cấu trúc có thể được truy cập bởi hai loại toán tử:

Điều hành thành viên

  1. Toán tử trỏ cấu trúc
  2. Union là gì?

Đây là một loại dữ liệu đặc biệt được sử dụng trong C cho phép người dùng lưu trữ các loại dữ liệu các loại khác nhau trong cùng một vị trí bộ nhớ. Liên minh khá giống với cấu trúc và nó có thể được định nghĩa bằng cách thay thế từ khóa 'struct' bằng từ khóa 'union'. Các thành viên che phủ bộ nhớ của nhau trong một liên hiệp và nó là đủ lớn để phù hợp với tất cả các thành viên của nó.

Khi một biến được kết hợp với union, trình biên dịch sẽ phân bổ bộ nhớ bằng cách xem kích thước của bộ nhớ lớn nhất, do đó, kích thước của một liên minh bằng với kích thước của thành viên dữ liệu lớn nhất.Một công đoàn có thể được định nghĩa với nhiều thành viên, nhưng chỉ có một thành viên có giá trị tại bất kỳ thời gian nhất định nào.

Địa chỉ giống nhau cho tất cả các thành viên của một liên minh, nghĩa là mỗi thành viên bắt đầu bằng một giá trị bù đắp giống nhau. Và thay đổi giá trị của một thành viên sẽ ảnh hưởng đến giá trị của các thành viên khác. Một công đoàn có thể được sử dụng khi bạn muốn lưu trữ một cái gì đó là một trong một số loại dữ liệu.

nhân viên công đoàn {

tên char [32];

tuổi thọ;

lương phao;

};

Ở đây, từ khóa 'union' (hiệp định) 'union' định nghĩa sự kết hợp tương tự như việc khai báo cấu trúc. Biến có thể lưu trữ một giá trị chuỗi là 'tên của nhân viên', một giá trị số nguyên là 'tuổi của nhân viên' hoặc một float đại diện cho 'mức lương của nhân viên'.

Khác biệt giữa cấu trúc và liên minh

1. Từ khoá

Từ khóa 'struct' được sử dụng để xác định cấu trúc trong khi từ 'union' được sử dụng để xác định một liên kết.

2. Phân bổ bộ nhớ

Không gian bộ nhớ riêng biệt được phân bổ cho các thành viên trong cấu trúc và các thành viên có địa chỉ khác nhau không chia sẻ bộ nhớ. Một công đoàn, mặt khác, chia sẻ cùng một không gian bộ nhớ cho tất cả các thành viên để chia sẻ vị trí bộ nhớ được phân bổ.

3. Truy cập thành viên

Một liên minh lưu trữ một giá trị tại một thời điểm cho tất cả các thành viên của nó chỉ có thể tiếp cận với một thành viên một lúc. Mặc dù nhiều giá trị có thể được lưu trữ trong một cấu trúc vì vậy bất kỳ giá trị thành viên có thể được truy cập và lấy ra bất cứ lúc nào.

4. Kích thước

Kích thước của một cấu trúc bằng tổng của kích thước của tất cả các thành viên trở lên, trong khi kích thước của một nghiệp đoàn bằng với kích thước của thành viên có kích thước lớn nhất.

5. Khởi tạo

Trong một cấu trúc, một số thành viên có thể được khởi tạo cùng một lúc, trong khi trong một union, chỉ có thành viên đầu tiên có thể được khởi tạo với giá trị của kiểu của nó.

5. Giá trị

Một cấu trúc có thể lưu trữ các giá trị khác nhau của tất cả các thành viên và thay đổi giá trị của một thành viên sẽ không có bất kỳ ảnh hưởng đến giá trị của các thành viên khác. Trong khi công đoàn lưu trữ cùng một giá trị cho tất cả các thành viên của mình và thay đổi giá trị của một thành viên sẽ ảnh hưởng đến giá trị của các thành viên khác.

Cấu trúc so với Liên minh

Cấu trúc

Liên minh Từ khóa Struct được sử dụng để xác định cấu trúc.
Từ khoá Union được sử dụng để xác định một liên minh. Thành viên không chia sẻ bộ nhớ trong một cấu trúc.
Thành viên chia sẻ không gian bộ nhớ trong một nghiệp đoàn. Bất kỳ thành viên nào cũng có thể được lấy ra bất cứ lúc nào trong một cấu trúc.
Chỉ có một thành viên có thể truy cập được tại một thời điểm trong liên minh. Một số thành viên của một cấu trúc có thể được khởi tạo cùng một lúc.
Chỉ có thành viên đầu tiên có thể được khởi tạo. Kích thước của cấu trúc bằng tổng của kích thước của mỗi thành viên.
Kích thước của liên minh bằng với kích thước của thành viên lớn nhất. Thay đổi giá trị của một thành viên sẽ không ảnh hưởng đến giá trị của một thành viên khác.
Thay đổi giá trị của một thành viên sẽ ảnh hưởng đến các giá trị thành viên khác. Lưu trữ các giá trị khác nhau cho tất cả thành viên.
Giữ cùng giá trị cho tất cả các thành viên. Tóm tắt

Cả hai cấu trúc và công đoàn đều là những kiểu dữ liệu do người dùng định nghĩa trong C vốn có chức năng và khái niệm giống nhau nhưng lại khác nhau ở một số khía cạnh.

  • Cả hai đều chứa các biến của các kiểu dữ liệu khác nhau nhưng chúng sử dụng cùng cú pháp để khai báo các biến và truy cập các thành viên. Trong khi một cấu trúc được định nghĩa bởi từ khóa 'struct', một liên kết được xác định bởi từ khóa 'union'.
  • Mỗi thành viên sẽ có vị trí bộ nhớ riêng trong một cấu trúc, trong khi trong một liên minh, tổng dung lượng bộ nhớ tương đương với thành viên có kích thước lớn nhất. Tất cả các thành viên chia sẻ cùng một không gian bộ nhớ trong một công đoàn.
  • Bất kỳ thành viên nào trong bất kỳ trình tự nào có thể được truy cập trong một cấu trúc, trong khi ở một liên minh, chỉ có thể truy cập biến đó mà giá trị được lưu trữ gần đây.