码迷,mamicode.com
首页 > 其他好文 > 详细

结构体与共同体

时间:2020-05-04 00:22:30      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:顺序   cal   color   声明   结构体   结构体类型   地址   怎么办   定义变量   

在实际开发中,有时候需要处理多个基本数据类型的数据。例如,一个学生管理系统,需要的信息有姓名、学号、性别、年龄等信息,里面包含了字符型、整型、浮点和实型数据类型。在C语言中没有能够处理这样的数据类型,这是需要一个构造包含各种数据类型的类型,这种构造类型被称为结构体和共同体。

1.结构体

使用关键字  struct  定义结构体:

struct 结构体名
{
      成员列表
};

例如定义一个cat的结构体:

struct cat
{
       char catName[10];     //猫的名字
       int age;              //年龄
       float weight;         //体重
       char sex;             //性别
};

定义结构体变量

(1)声明结构体,再定义变量。

struct cat cat1;

(2)在声明结构体的同时,定义变量。

struct  结构体名
{
      成员列表;
}变量名;

以上述为例:

struct cat
{
       char catName[10];     //猫的名字
       int age;              //年龄
       float weight;         //体重
       char sex;             //性别
}cat1;

(3)直接定义结构体类型变量。

struct
{
      成员列表;
}变量名列表;

以上述为例:

struct
{
       char catName[10];     //猫的名字
       int age;              //年龄
       float weight;         //体重
       char sex;             //性别
}cat;                        //定义结构体变量

结构体初始化

以上述为例:

struct Cat
{
       char catName[10];     //猫的名字
       int age;              //年龄
       float weight;         //体重
       char sex;             //性别
}cat1={"小黄",2,2.3f,""};       //定义变量并初始化

结构体变量引用

引用结构体变量成员的一般形式为:

结构体变量名.成员名

例如:

cat.catName;
cat.age;

赋值:

cat.catName="小黄";
cat.age=2;

当结构体遇见了数组

以上的定义,只能描述一只猫的信息,当我们需要描述多只猫的信息的时候,怎么办么?这就需要数组来帮忙了。

定义和初始化:

struct Cat
{
       char catName[10];     //猫的名字
       int age;              //年龄
       float weight;         //体重
       char sex;             //性别
}cats[4]={ {"小黄",2,2.3f,""},
           {"麻花",1,1.4f,""},
           {"斑点",2,2.3f,""}
           {"财财",3,4.1f,""} };       //定义变量并初始化

结构体数组的引用:

结构体数组名[序号].成员名;

 

2.链表

 链表是一个常见的数据存储结构,数据的元素逻辑顺序通过链表中的指针链连接实现的。它就像一列火车一样,如下图所示,一个节点就相当于一节车厢,节点中可以有不同的数据类型,而连接车厢的铰链就相当于一个指针。

链表的节点包含两个内容:

(1)节点中保存的数据;

(2)下一个节点的地址指针;

技术图片

创建链表

(1)malloc()函数

malloc()函数的原型如下:

void *malloc(unsigned int size);

该函数会在内存中动态地分配一块大小合适的内存空间。malloc()函数会返回一个指针,指向分配的内存空间,如果出现错误,则返回NULL。

(2)calloc()函数

 calloc()函数的原型如下:

void *calloc(unsigned int size);

该函数会在内存中动态地分配n个长度为size的值的连续内存空间数组。calloc()函数会返回一个指针,指向动态分配的连续内存空间地址。如果出现错误,则返回NULL。

(3)free()函数

free()函数的原型如下:

void free(void *ptr);

该函数是使用由指针ptr指向的内存区,使部分内存区被其他变量使用。ptr是最近一次调用calloc()或者malloc()函数时返回的值。

 

3.共同体

定义共同体:

union 共同体名
{
      成员列表;
}变量列表;

例如:

union DataUnion
{
      int iInt;
      char cChar;
}variable;

定义共同体变量:

union DataUnion variable;

初始化共同体变量时,只需要一个初始化值就足够了,其类型必须和共同体的第一个成员的数据类型一致。

例如:

union DataUnion variable={34};

引用共同体变量:

variable.iInt;
variable.cChar;

案例:

#include<stdio.h>

union DataUnion
{
      int iInt;
      char cChar;
};

int main()
{
      union DataUnion letter;
      letter.iInt=65;
      printf("修改之前:%c\n",letter.cChar);
      letter.cChar=D;
      printf("修改之后:%c\n",letter.iInt);
      return 0;
}

 输出:

修改之前:A
修改之后:D
请按任意键继续. . .

  

结构体与共同体

标签:顺序   cal   color   声明   结构体   结构体类型   地址   怎么办   定义变量   

原文地址:https://www.cnblogs.com/xduhongyun/p/12823931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!