C语言笔记之结构体第二篇

文章目录

一、结构体的声明

结构体的每个成员可以是不同类型的变量

  1. 结构成员的类型:标量/数组/指针/其他结构体
  2. 结构体变量的定义和初始化
c 复制代码
    // 声明结构体类型的同时定义变量p1,p1是全局变量
    struct Point
    {
        int x;
        int y;
    } p1; // 注意 ; 不要忘记了

    struct Node
    {
        int data;
        struct Point p;
        struct Node *next; // 一个struct Node类型的指针变量,变量名叫next
    };

    int main()
    {
        struct Point p2;            // 定义结构体变量p2,此时p2是局部变量,作用范围是main()函数
        struct Point p3 = {20, 18}; // 初始化
        struct Node n = {20, {12, 15}, NULL};
        return 0;
    }

二、结构体成员的访问&结构体传参

  1. 结构体对象.成员变量
  2. 结构体指针 ->成员变量
  3. 嵌套结构体:外层是指针,内层是变量 ptr -> obj.member
  4. 嵌套结构体:外层是指针,内层也是指针ptr -> ptr2 -> member
  5. 结构体传参时要传结构体的地址,这样可以避免当结构体过大,参数压栈的的系统开销比较大,导致性能的下降
c 复制代码
struct Point
    {
        int x;
        int y;
    }; 
    struct Node
    {
        int data;
        struct Point p;
        struct Node *next; // 一个struct Node类型的指针变量,变量名叫next
    };

    // 结构体对象.成员变量
    void print1(struct Node n)
    {
        printf("%d %d %d %p\n", n.data, n.p.x, n.p.y, n.next);
    }
    // 结构体指针 ->成员变量
    void print2(struct Node *pn)
    {
        // 注意这里的pn->p.x, pn->p.y写法
        // 嵌套结构体:外层pn是指针,内层p是变量
        // 结构体指针找成员变量用->
        // 结构体变量找成员变量用.
        printf("%d %d %d %p\n", pn->data, pn->p.x, pn->p.y, pn->next);
    }
    int main()
    {
        struct Node n = {20, {12, 15}, NULL};
        print1(n);//传结构体
        print2(&n);//传地址
        return 0;
    }
相关推荐
z落落6 小时前
C# WinForm Socket 转串口设备服务器+Modbus CRC16校验+Socket 客户端
服务器·开发语言·c#
春风解人意12 小时前
从零开始学习嵌入式P32----网络基础之TCP
c语言·网络·学习·tcp/ip
小灰灰搞电子12 小时前
Rust+Slint 实现动态消息提示框源码分享
开发语言·后端·rust
李帅朋12 小时前
微分基本定义笔记
人工智能·笔记·深度学习·神经网络
传奇开心果编程13 小时前
【Rust入门知识点学与练】第21课:Trait 进阶 Advanced Traits
开发语言·学习·rust
新时代牛马14 小时前
字符设备驱动完整篇:从 cdev_add、file_operations 到chrdev_open 与排障
开发语言·python
swordbob14 小时前
ReentrantLock 与 AQS 完整学习手册
java·开发语言
是隼人14 小时前
buuctf-pwn inndy_echo(32位fmt)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
白山编程大哥14 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
xian_wwq15 小时前
【学习笔记】深度认知系列-第16讲-提示词工程
人工智能·笔记·学习