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;
    }
相关推荐
cao23337 小时前
关于 y0 y1 yn 变量名冲突说法的指正
笔记
WJ.Polar15 小时前
Java封装、继承、多态
java·开发语言
摇滚侠15 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
~patience~15 小时前
WAV 逆向分析工具使用笔记
笔记
滴啦嘟啦哒15 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
weixin_3077791315 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
xier_ran15 小时前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名15 小时前
ai应用开发的学习笔记
服务器·笔记·学习
爱读书的小胖16 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
鸽鸽程序猿16 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python