`
justshare
  • 浏览: 106011 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

C系列:结构struct与联合union

阅读更多
结构(struct) 是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 
定义结构变量的一般格式为:
    
引用
struct 结构名 {
          类型  变量名;
          类型  变量名;
          ...
     } 结构变量; 

结构的初始化/赋值以及输出:
(1)标准定义,在定义结构类型的同时说明结构变量
引用
struct stru{
   int pureSize;
   char *pureStr;
} *pure, insted;

struct stru ins = {pureSize:32, pureStr:"o223jflsdfa"};  /* 一站式赋值 */
/* insted.pureSize = 32;  // 分步赋值
insted.pureStr = "o223jflsdfa"; */
pure = &ins; /* 将地址赋给结构变量为pure的指针*/
printf("pureSize=%d,  pureStr=%s\n", pure->pureSize, pure->pureStr);  /* 输出 */

Result:pureSize=32,  pureStr=o223jflsdfa


(2)用typedef来声明结构,在定义结构类型的同时说明结构变量
引用
typedef struct stru{
   int pureSize;
   char *pureStr;
} *pure, insted;  /*insted = {56, "23fslffsf222"};  直接初始化*/

/* insted ins = {pureSize:56, pureStr:"23fslffsf222"}; 一站式赋值 */
insted ins;  /* 分步赋值,由于引用别名,所以这里要定义新的结构名ins */
ins.pureSize = 56;
ins.pureStr = "23fslffsf222";
pure  p2 = &ins;  /* 将地址赋给别名为pure的指针,由于引用别名,所以这里要定义新的结构名p2 */
printf("%d,  %s\n", p2->len, p2->str);

Result:56,  23fslffsf222

(3)直接说明结构变量,省去结构名,一般在函数内部声明
引用
struct {
int size;
char *str;
} *pstr, p;

p.size = 44;
p.str = "sdfsf";
pstr = &p;  /* 将地址赋给结构变量为pstr的指针*/
printf("Size=%d,   Str=%s\n", pstr->size, pstr->str);
printf("Size=%d ,  Str=%s\n", (*pstr).size, (*pstr).str);  /* 必须有()括起来,因为 . 的优先级比 * 高 */

Result:Size=44,  Str=sdfsf

联合的声明与访问和结构相同,这里就省略之,下面描述一下联合与结构的区别
引用
1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合转只存放了一个被选中的成员, 而结构的所有成员都存在(联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型和不同长度的变量,而结构的所有成员都保持独立)。
    2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的

以上例子在 gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)运行通过
分享到:
评论

相关推荐

    c语言中的结构struct和联合union简介.doc.doc

    c语言中的结构struct和联合union简介

    struct和union结构体和联合体的区别.pdf

    - **Union内存分配**:与结构体不同,联合体内的所有成员共享同一段内存空间。这意味着联合体变量的内存空间大小取决于联合体内占用空间最大的成员。因此,联合体变量的大小通常小于或等于结构体变量的大小。 #### ...

    C语言中struct和union有啥区别

    ### C语言中struct和union的区别 #### 一、概述 在C语言中,`struct` 和 `union` 都是用来创建复杂数据类型的构造数据类型。它们允许开发者将多个不同类型的变量组合在一起,以便更高效地管理和操作数据。尽管两者...

    C语言程序设计:项目9 结构与联合.ppt

    在C语言中,结构(Structure)和联合(Union)是两种非常重要的构造类型,它们允许我们组合多种不同类型的变量于一个单一的复合数据类型。本项目专注于理解和应用这两种数据结构。 9.1 结构体 9.1.1 结构的概念 ...

    C语言程序设计:第七章 结构与联合.ppt

    在C语言程序设计中,"结构与联合"是高级数据类型的重要组成部分,它们允许程序员将不同类型的数据组合成一个单一的实体,便于管理和操作。第七章的内容主要围绕结构体(Struct)和联合体(Union)的概念、定义以及...

    c语言基础教程第九章联合和枚举.pdf

    联合的定义与结构类似,但使用`union`关键字代替`struct`。以下是一个简单的联合定义: ```c union UnionName { dataType1 member1; dataType2 member2; // 更多成员... }; ``` 在这个例子中,`UnionName`...

    C语言程序设计:第8章 结构

    本章主要讲解了结构(structure)、联合(union)以及指针的相关概念和用法。 8.1 结构数据类型 结构数据类型是C语言中自定义数据类型的一种形式,它允许我们创建包含多种不同数据类型的单一实体。结构体可以用来...

    C++中union详解

    本文将详细介绍`union`的概念、特点、与结构体(struct)的区别以及如何在实际开发中有效使用`union`。 #### 二、什么是Union? **Union**是一种特殊的类,也是一种构造类型的数据结构。在一个**union**内可以定义多种...

    结构与联合类型ppt(武汉大学)

    结构类型和联合类型是C语言中的重要概念,用于创建自定义的数据结构,将不同类型的数据组合在一起,方便管理和操作。在本篇内容中,我们将详细探讨这两种类型。 首先,结构类型(structure type)是一种构造数据...

    第11章 结构与联合.ppt

    在C语言中,结构(Struct)和联合(Union)是两种重要的数据结构,它们允许我们组织和管理不同类型的数据。在第11章“结构与联合”中,我们将深入理解这两种构造类型及其应用。 结构是一种自定义的数据类型,它能够...

    C语言程序设计:第8章 结构.ppt

    8.2 联合类型联合(union)也是C语言中的一种复合数据类型,它与结构类似,但联合内的所有成员共享同一块内存空间,所以任何时刻只能访问其中一个成员。 8.3 指针小结指针是C语言中的重要概念,它可以存储变量的...

    C 程序设计 第8章 结构和联合(共用体).ppt

    在C语言中,结构体(structure)和联合(union)是两种重要的复合数据类型,它们允许我们将不同类型的数据组合在一起,形成更复杂的结构。本章主要讲解了如何使用结构体和联合进行编程。 首先,结构体是一种自定义...

    C语言内存管理与联合结构课件笔记.md

    # C语言内存管理与联合结构知识点详解 ## 内存管理概述 ### 一、堆与栈的概念 #### 堆: - **用途**:动态分配内存,内存大小可根据需要变化。 - **特点**:手动分配与释放。 - **位置**:位于进程地址空间中的...

    实验14结构与联合

    ### 结构与联合知识点概述 #### 一、实验目的概览 本次实验旨在通过实践学习以下四个关键概念: 1. **结构体类型变量的定义与使用**:掌握如何定义结构体变量并对其进行操作。 2. **结构体类型数组的使用**:理解...

    C语言初学者入门讲座 第十三讲 联合

    在C语言的学习过程中,联合(Union)是一种非常重要的数据结构,它与结构体(Struct)有着显著的区别。本文将基于提供的标题、描述、标签以及部分内容,详细解析C语言中的联合概念。 #### 一、联合的定义 联合是一...

    C语言程序设计:第11章 结构体与联合体A.pdf

    在C语言中,结构体(struct)是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体,方便地处理复杂的数据结构。结构体类型变量的定义和引用是理解这一特性的重要基础。 11.1.1 结构体类型变量...

    C语言编程宝典C语言编程宝典

    《C语言编程宝典》 说明: 作者:王大刚 分为基础篇...结构(struct) 联合(union) 枚举(enum) 函数 函数篇 (注:字母表示函数以该字母开头。) A B C D E F G H I K L M O P Q R S T U V W 图形函数 字符屏幕函数

    C语言 位域PPT学习教案.pptx

    联合(Union)是C语言中另一种构造类型,它与结构体相似,但其所有成员共享同一块内存空间。这意味着,联合的大小等于其成员中占用空间最大的那个成员的大小。联合的定义如下: ```c union Data { char ch; short...

    第四章:顺序程序设计_C语言与数据结构PPT4_

    10. **结构体与联合**:结构体(struct)允许我们创建自定义的数据类型,将多个不同类型的变量组合在一起。联合(union)则允许在一个内存位置存储不同类型的变量。 11. **输入/输出**:C语言使用标准库函数(如...

    C语言 位域PPT课件.pptx

    总结来说,位域、结构体嵌套和联合是C语言中处理数据结构的重要工具,它们各自提供了一种独特的方式来组织和操作内存,从而满足不同的编程需求。理解和熟练运用这些概念对于编写高效且灵活的C语言代码至关重要。

Global site tag (gtag.js) - Google Analytics