标签:顺序 cal color 声明 结构体 结构体类型 地址 怎么办 定义变量
在实际开发中,有时候需要处理多个基本数据类型的数据。例如,一个学生管理系统,需要的信息有姓名、学号、性别、年龄等信息,里面包含了字符型、整型、浮点和实型数据类型。在C语言中没有能够处理这样的数据类型,这是需要一个构造包含各种数据类型的类型,这种构造类型被称为结构体和共同体。
使用关键字 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,"雌"} }; //定义变量并初始化
结构体数组的引用:
结构体数组名[序号].成员名;
链表是一个常见的数据存储结构,数据的元素逻辑顺序通过链表中的指针链连接实现的。它就像一列火车一样,如下图所示,一个节点就相当于一节车厢,节点中可以有不同的数据类型,而连接车厢的铰链就相当于一个指针。
链表的节点包含两个内容:
(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()函数时返回的值。
定义共同体:
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