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;
    }
相关推荐
汤米粥16 分钟前
Python调用百度搜索触发安全验证
开发语言·python
影寂ldy24 分钟前
C# 五大加密算法全套实战(AES/DES对称、RSA非对称、MD5/SHA256哈希)
开发语言·c#·哈希算法
罗超驿1 小时前
6.Java LinkedList深度解析:从链表原理到源码实践
java·开发语言·链表
2501_948106911 小时前
计算机毕业设计之jsp物业管理系统
java·大数据·开发语言·汽车·课程设计
逝水无殇1 小时前
C# 反射详解
开发语言·后端·c#
kdxiaojie1 小时前
Linux 驱动研究 —— V4L2 (2)
linux·运维·笔记·学习
阿米亚波1 小时前
【C++ STL】std::list
c++·windows·笔记·stl·list
xlxxy_1 小时前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
北冥you鱼1 小时前
Go语言常用包使用指南:从标准库到第三方利器
开发语言·microsoft·golang