0
点赞
收藏
分享

微信扫一扫

C语言——结构的定义

善解人意的娇娇 2022-03-30 阅读 81
c语言

结构

一、定义结构

使用 struct 语句来定义结构结构是一个包含多个成员的数据类型。
struct 语句的格式如下:

struct tag { 
    member-list
    member-list 
    member-list  
    ...
} variable-list ;

在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个

符号含义
tag结构体标签
member-list标准的变量定义,比如 int i; 或者 float f 等
variable-list结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量

二、声明结构的形式

第一种

// 此声明声明了拥有3个成员的结构体,分别为整型的 x,字符型的 y 和双精度的 z
// 结构体的标签被命名为 point,没有声明变量
struct point {
    int x;
    float y;
    double z;
}; 

// 用 point 标签的结构体,另外声明了变量 p1、p2、p3
struct point p1, p2[10], *p3;

// p1、p2、p3 都是 point, 里面有 x y z 的值

第二种

// 此声明声明了拥有3个成员的结构体,分别为整型的 x,字符型的 y 和双精度的 z
// 同时又声明了结构体变量 p1、p2、p3
// 这个结构体并没有标明其标签
struct {
    int x;
    float y;
    double z;
}p1, p2[10], *p3;

// p1、p2、p3 都是一种无名结构, 里面有 x y z

第三种

// 此声明声明了拥有3个成员的结构体,分别为整型的 x,字符型的 y 和双精度的 z
// 同时又声明了结构体变量 p1、p2、p3
// 结构体的标签被命名为 point
struct point {
    int x;
    float y;
    double z;
}p1, p2, p3;
// p1、p2、p3 都是 point, 里面有 x y z 的值

第一种和第三种形式,都声明了结构 point,但第二种形式没有声明 point,只是定义了三个变量

第四种

// 结构体的成员包含其他结构体,或包含指向自己结构体类型的指针

// 此结构体的声明包含了其他的结构体
struct COMPLEX
{
    char string[100];
    struct SIMPLE a;
};
 
// 此结构体的声明包含了指向自己类型的指针
struct NODE
{
    char string[100];
    struct NODE *next_node;
};

第五种

// 两个结构体互相包含

struct B;    // 对结构体B进行不完整声明
 
// 结构体A中包含指向结构体B的指针
struct A
{
    struct B *partner;
    //other members;
};
 
// 结构体B中包含指向结构体A的指针,在A声明完后,B也随之进行声明
struct B
{
    struct A *partner;
    //other members;
};

三、结构的初始化

举报

相关推荐

0 条评论