亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

结构与联合的区别

什么是结构?

结构是C编程语言中用户自定义的数据类型,将不同数据类型的逻辑相关数据项组合在一起。

所有结构元素都存储在连续的内存位置。结构类型变量可以在一个名称下存储多个不同数据类型的数据项。

在本教程中,您将学习:

什么是联合

Union 是用户定义的数据类型,就像结构一样。 Union 将不同类型和大小的对象组合在一起。 union 变量分配的内存空间等于存放 union 最大变量的空间。它允许不同类型的对象共享相同的位置。

声明结构的语法

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

结构是使用“struct”关键字和结构名称声明的。数字 1、数字 2、数字 3 是结构的单个成员。正文部分以分号 (;) 结束。

C 编程中的结构示例

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

在上面的程序中,创建了一个名为 student 的结构。这个结构有三个数据成员:1)name(字符串),2)roll_no(整数),3)marks(浮点数)。

之后,会创建一个结构变量sdt来存储学生信息并显示在电脑屏幕上。

输出:

输入以下信息:

输入学生姓名:James

输入学生卷号:21

输入学生分数:67

您输入的信息是:

学生姓名:约翰

学生卷号:21

学生成绩:67.0

联合声明语法

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

使用“union”关键字和联合名称声明联合。 1号、2号、3号是工会的个人成员。正文部分以分号 (;) 结束。

C 编程中的联合示例

#include <stdio.h>

union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

输出:

1101109601

20.199892

一个

在上面的程序中,您可以看到 x 和 y 的值已损坏。只有变量 ch 打印预期结果。这是因为,在 union 中,内存位置在所有成员数据类型之间共享。

因此,当前存储其值的唯一数据成员将占用内存空间。变量ch的值最后被存储了,所以剩下的变量的值就丢失了。

结构对比。联合

这是结构和联合之间的重要区别:

结构 联合 可以使用 struct 关键字来定义结构。可以使用 union 关键字来定义联合。结构中的每个成员都分配有唯一的内存位置。在联合中,内存位置由所有数据成员共享。更改值一个数据成员的值不会影响结构中的其他数据成员。更改一个数据成员的值将更改联合中其他数据成员的值。它使您可以一次初始化多个成员。它使您可以仅初始化第一个成员union的大小。结构的总大小是每个数据成员的大小之和。union的总大小是最大数据成员的大小。主要用于存储各种数据类型。主要用于存储许多可用数据类型中的一种。它为内部参数中写入的每个成员占用空间。它为内部参数中写入的具有最大大小的成员占用空间。您可以一次检索任何成员。您可以访问一个成员在 union 中一次 er。它支持灵活数组。它不支持灵活数组。

结构的优点

以下是使用结构的优点/好处:

联合的优点

以下是使用联合的优点/好处:

结构的缺点

以下是使用结构的缺点/缺点:

联合的缺点

以下是使用联合的缺点/缺点:

主要区别:


C语言

  1. 石棉和玻璃纤维的区别
  2. 结构和类的区别:用 C++ 示例解释
  3. C# 对比C++:C# 和 C++ 有什么区别?
  4. C和C++之间的区别
  5. C和Java之间的区别
  6. C中字符串的strlen()和sizeof()之间的区别
  7. Python 与 JavaScript:JavaScript 和 Python 之间的区别
  8. Python Vs Ruby:Ruby 和 Python 的区别
  9. Python 2 与 Python 3:Python 2.x 和 Python 3.x 有什么区别?
  10. 直流电机和交流电机的区别
  11. 钎焊和锡焊的区别
  12. 2冲程和4冲程发动机的区别