Logo vi.removalsclassifieds.com

Sự khác biệt giữa Cấu trúc và Liên minh trong C (Với Bảng)

Mục lục:

Anonim

Trong ngôn ngữ lập trình C, có kiểu dữ liệu được xác định trước và kiểu dữ liệu do người dùng định nghĩa. Ví dụ về kiểu dữ liệu do người dùng xác định là cấu trúc và sự kết hợp trong C.

Trong Structure and Union, người dùng có thể xác định các kiểu dữ liệu khác nhau và các hàm thành viên để truy cập vào tất cả các biến. Mặc dù cả hai đều tuân theo cùng một cú pháp, nhưng có một sự khác biệt rất lớn giữa chúng.

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

Trong Cấu trúc, tổng kích thước bộ nhớ bằng tổng kích thước của tất cả các kiểu dữ liệu trong cấu trúc. Trong khi trong Union, tổng kích thước không gian bộ nhớ bằng kích thước của kiểu dữ liệu lớn nhất trong union. Đó là một trong những điểm khác biệt quan trọng nhất giữa cấu trúc và liên minh.

Ví dụ

Kết cấu công việc

{

Tiền Int;

Tên nhân vật;

} s1;

Trong trường hợp này, kích thước bộ nhớ cho cấu trúc được cấp phát sẽ là 2 + 1 = 3 byte vì kích thước của số nguyên là 1 byte và kích thước của char là 2 byte. Do đó kích thước sẽ là 3 byte.

`công đoàn

{

Tiền Int;

Tên nhân vật;

} s1;

Trong liên hợp, kích thước của bộ nhớ được cấp phát sẽ là 2 byte vì kích thước tối đa của kiểu dữ liệu trong liên hợp là 2 byte, tức là kiểu dữ liệu ký tự.

Bảng so sánh giữa cấu trúc và liên kết trong C (ở dạng bảng)

Tham số để so sánh liên hiệp Kết cấu
Định nghĩa từ khóa Sử dụng từ khóa "union" Sử dụng từ khóa “struct”
Kích thước bộ nhớ Kích thước bằng phần tử có kích thước lớn nhất. Kích thước bằng tổng của tất cả các phần tử trong cấu trúc
Bộ nhớ dùng chung Tất cả bộ nhớ của phần tử được chia sẻ với các phần tử khác nhau Các phần tử cấu trúc không có bộ nhớ dùng chung.
Quyền truy cập phần tử Chỉ một phần tử duy nhất được truy cập tại một thời điểm duy nhất Có thể truy cập bất kỳ số lượng phần tử nào vào bất kỳ thời điểm nào
Thí dụ Ví dụ liên minh {Loại dữ liệu và thành viên} obj; struct example {Loại dữ liệu và thành viên} obj;

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

Cấu trúc là một nhóm dữ liệu do người dùng định nghĩa và là tập hợp của nhiều kiểu dữ liệu khác nhau. Ví dụ sau đây sẽ khá hữu ích. Giả sử rằng một lập trình viên cần lưu trữ một số dữ liệu như sinh viên, tên, lớp học, địa chỉ và nhiều dữ liệu khác.

Có hai cách để tiếp cận vấn đề này, một là tạo các kiểu dữ liệu khác nhau và một là tạo một cấu trúc.

Ở đây trong trường hợp này cấu trúc sẽ có lợi vì nếu bạn tạo các biến riêng lẻ thì bạn cần phải tạo nhiều biến cho mọi học sinh, và nó sẽ thực sự tàn khốc. Thay vào đó, một cấu trúc có thể được sử dụng lại nhiều lần.

Một cấu trúc có thể được tạo bằng cách sử dụng một từ khóa, struct.

Ví dụ

Tên_mạch cấu trúc {

Kiểu dữ liệu datatype_name;

Kiểu dữ liệu datatype_name;

Kiểu dữ liệu datatype_name;

Kiểu dữ liệu datatype_name;

};

Nếu bạn muốn truy cập bất kỳ thành viên dữ liệu nào, bạn cần tạo một đối tượng như

Cấu trúc cấu trúc tên_đối tượng_tên;

Với cú pháp object_name.datatype_name, bạn sẽ có thể truy cập kiểu dữ liệu trong cấu trúc.

Union in C là gì?

Tương tự với cấu trúc union là một kiểu dữ liệu khác do người dùng định nghĩa trong ngôn ngữ lập trình C. Bất cứ khi nào một lập trình viên xác định một liên hợp, một kiểu dữ liệu do người dùng xác định sẽ được thực hiện, nhưng không có vị trí bộ nhớ.

Chà, nếu bạn muốn cấp phát bộ nhớ thì người ta cần tạo các biến trong liên hợp. Union có thuộc tính không cho phép bất kỳ lập trình viên nào truy cập nhiều hơn một kiểu dữ liệu.

Do đó, trong liên minh, một lập trình viên có thể truy cập một thành viên dữ liệu tại một thời điểm. Hãy để chúng tôi lấy một ví dụ nhỏ.

Union union_name

{

Kiểu_dữ_liệu Tên_dữ liệu Kiểu dữ liệu;

Kiểu_dữ_liệu Tên_dữ liệu Kiểu dữ liệu;

Kiểu_dữ_liệu Tên_dữ liệu Kiểu dữ liệu;

Kiểu_dữ_liệu Tên_dữ liệu Kiểu dữ liệu;

};

Trong ví dụ trên, một cấu trúc cơ bản của union được hiển thị. Đó là cách một lập trình viên tạo ra liên minh. Nếu bạn muốn truy cập bất kỳ kiểu dữ liệu nào trong liên hợp, bạn cần phải sử dụng nó. toán tử tương tự như cấu trúc.

Union_name objname; Với câu lệnh trên, bạn có thể tạo đối tượng sẽ giúp bạn truy cập vào bất kỳ kho dữ liệu nào trong liên hợp bằng cách sử dụng toán tử dot.

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

  1. Cấu trúc là một kiểu dữ liệu do người dùng định nghĩa để lưu trữ các kiểu dữ liệu khác nhau. Ngoài ra, nó được sử dụng để biểu thị giá trị của một tập hợp các loại dữ liệu. Nếu một lập trình viên cần xác định một union, thì một lập trình viên cần sử dụng từ khóa struct. Trong khi cần có union, thì cần có từ khóa union để định nghĩa.
  2. Trong một cấu trúc, tất cả các kiểu dữ liệu được lưu trữ ở một vị trí khác và bạn có thể truy cập vào nhiều thành viên dữ liệu. Trong khi trong liên hợp, tất cả các thành viên dữ liệu chia sẻ cùng một vị trí bộ nhớ và chỉ một thành viên dữ liệu duy nhất có thể được truy cập tại một thời điểm.
  3. Trong cấu trúc, để khởi tạo bất kỳ thành viên nào, một số thành viên có thể được khởi tạo cùng một lúc, nhưng trong trường hợp union, chỉ thành viên đầu tiên có thể được khởi tạo.
  4. Tổng kích thước của cấu trúc phụ thuộc vào tổng kích thước của tất cả các thành viên dữ liệu, trong khi trong trường hợp liên hợp, kích thước bằng với thành viên dữ liệu có kích thước lớn nhất trong số tất cả.
  5. Về cấu trúc, mọi kiểu dữ liệu có cấp phát bộ nhớ khác nhau, trong khi trong liên hợp, có một bộ nhớ duy nhất được cấp phát cho thành viên dữ liệu có kích thước lớn nhất.

Sự kết luận

Cấu trúc và sự kết hợp đều là kiểu dữ liệu do người dùng định nghĩa được sử dụng trong lập trình c. Cấu trúc và Liên hiệp có chung khái niệm lưu trữ nhiều kiểu dữ liệu. Và tất cả các kiểu dữ liệu trong cấu trúc và liên hợp được truy cập bằng toán tử dấu chấm.

Cấu trúc và sự kết hợp chỉ khác nhau về kích thước và phân bổ bộ nhớ, nhưng trường hợp sử dụng của chúng thì giống nhau. Cả hai đều tăng khả năng tái sử dụng mã và hơn thế nữa. Nếu bạn muốn lưu trữ nhiều giá trị cho một kiểu dữ liệu, cấu trúc và liên hợp sẽ hữu ích.

Một trường hợp sử dụng cơ bản của cấu trúc và liên minh sẽ là khi bạn cần lưu trữ hồ sơ của nhân viên. Một cấu trúc hoặc liên hợp sẽ lưu trữ tất cả dữ liệu trong cấu trúc hoặc liên hợp, và sau đó bạn có thể lưu trữ hoặc truy cập dữ liệu. Sự khác biệt chính là tất cả về cấp phát bộ nhớ và truy cập kiểu dữ liệu.

Sự khác biệt giữa Cấu trúc và Liên minh trong C (Với Bảng)