C语言结构体与共用体

1.定义结构体类型变量的方法

  1. 先定义结构体类型,再定义结构体变量。
    struct 结构体名                                                                                                                  {
        成员列表
    };
    struct 结构体名 变量名;
  2. 在定义结构体类型的同时定义结构体变量。
    struct 结构体名                                                                                                                {
         成员列表
    } 变量名;
  3. 直接定义结构体变量。
    struct                                                                                                                                {
         成员列表
    } 变量名;

结构体变量的定义需要遵循结构体类型的定义规则,成员的类型和顺序必须与结构体类型的定义一致。同时,结构体变量可以通过成员运算符“.”来访问成员变量。

2.结构体变量的引用 

结构体变量的引用包括以下几种方式:

  1. 通过结构体变量名和成员运算符“.”来访问成员,例如:struct Student s1; s1.id = 1; strcpy(s1.name, "zhangsan");
  2. 可以使用指针来引用结构体变量,通过指针和“->”运算符来访问成员,例如:struct Student *p; p = &stu; p->id = 2; strcpy(p->name, "wangdefa");
  3. 可以将结构体变量作为函数的参数进行传递,在函数内部通过成员运算符或“->”运算符来访问成员。
  4. 也可以从函数中返回结构体变量。

在引用结构体变量时,要确保结构体变量已经被正确定义和初始化,并且成员的访问方式要符合结构体的定义。

3.结构体变量的初始化

1.在定义结构体变量时进行初始化。例如:

struct Student {
    int id;
    char name[20];
    float score;
};

struct Student s1 = {1, "wang", 90.5};

在上述例子中,结构体变量s1的成员id被初始化为1,成员name被初始化为"wang",成员score被初始化为90.5

2.使用花括号{}对结构体变量进行初始化。例如:

struct Student s2 = {
  .id = 2,
  .name = "zhang",
  .score = 85.0
};

在上述例子中,使用了点运算符.来指定成员并进行初始化。

3.对于结构体数组,可以逐个对数组元素进行初始化。例如:

struct Student stuArr[3] = {
    {1, "zhang", 90.5},
    {2, "li", 85.0},
    {3, "wang", 95.0}
};

在上述例子中,结构体数组stuArr的三个元素分别被初始化为不同的值。

在进行初始化时,要确保初始化的值与结构体成员的类型相匹配,并且按照结构体成员的定义顺序进行赋值。如果某些成员没有被显式初始化,它们将被初始化为默认值(例如,整数成员为0,字符数组成员为'\0'等)。

4.指向结构体数据类型的指针 

指向结构体数据类型的指针是一种特殊的指针,它指向结构体变量或结构体数组的地址。通过指向结构体的指针,可以方便地访问结构体中的成员。例如:

#include <stdio.h>

struct Student {
    int id;
    char name[20];
    float score;
};

int main() {
    struct Student s1 = {1, "wang", 90.5};
    struct Student *p = &s1;

    // 通过指针访问结构体成员
    printf("ID: %d\n", p->id);
    printf("Name: %s\n", p->name);
    printf("Score: %.1f\n", p->score);

    return 0;
}

在上述代码中,定义了一个结构体Student,包含成员idnamescore。然后,定义了一个结构体变量s1,并初始化了它的成员。接着,定义了一个指向结构体的指针p,并将其指向s1的地址。

通过指针p,可以使用->运算符来访问结构体成员,例如p->idp->namep->score。这样,就可以通过指针来操作结构体变量,而不需要直接使用结构体变量的名称。

5.用指针处理链表

链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

createNode函数用于创建一个新的链表节点,并分配内存。

insertAtHead函数用于将一个新节点插入到链表的头部。

printList函数用于打印链表中的所有节点数据。

freeList函数用于释放链表占用的内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值