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;
    }
相关推荐
山下梅子酒2256 分钟前
洛谷-入门-B2070
c语言
智鸟科技GemeOpen开发者智能设备9 分钟前
智能插座二次开发如何接入Home Assistant,从零开始完整工程实现(Python+React)
开发语言·python·物联网·react.js·智能家居
疯狂成瘾者10 分钟前
海康 Artemis 接口对接
开发语言·lua
Logic10121 分钟前
C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
2601_9622186121 分钟前
C++中decltype关键字的实现
开发语言·c++
hqyjzsb26 分钟前
法律 Prompt 干货:搭建合同审查提示词要包含哪些要素
开发语言·人工智能·python·职场和发展·数据分析·prompt·业界资讯
孙启超33 分钟前
【AI开发之Rust】第 19 课:UniFFI 导出核心能力
开发语言·后端·rust
摆烂z1 小时前
多模态大模型微调笔记
笔记
2601_966949651 小时前
股票池发生变化后,如何高效更新行情数据?从全量刷新到增量同步
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
繁华的地方不一定留下你的脚印1 小时前
C++ std::variant 与 std::visit:安全保存多种类型,写清每个处理分支
开发语言·c++