• 0长数组介绍


    0长数组介绍:也叫柔性数组

    用途:为了满足需要变长度的结构体

    用法:在一个结构体的最后,申明一个长度为0的数组,就可以实现这个结构体长度的可变,如:

    typedef struct _Student

    {

      int Age;

      int Length;

      char Info[0];//0长数组

    }Student,*pStudent;

    说明:

    1、长度为0的数组并不占用空间,sizeof(Student)=8。

    2、它只是一个偏移量,数组名这个符号本身代表了一个不可修改的地址常量。

    优缺点:

    优点:比起在结构体中声明一个指针变量,再进行动态分配的办法,这种方法效率要高,因为在访问数组内容时,不需要间接访问,避免了两次访存。

    缺点:在结构体中,为0的数组必须在最后声明,使用上有一定限制。

    例子:

    #include <QApplication>

    #include <QDebug>

    #include <QString>

    int main(int argc,char* argv[])

    {

      //局部变量

      int age = 10;

      QString name = "张三";

      //创建并初始化

      Student* student = (Student*)malloc(sizeof(Student) + name.length());

      student->Age = age;

      student->Length = name.length();

      memcpy(student->Info,name.toLocalBit8().data(),name.length());

      //打印

      qDebug()<<stutent->Age<<student->Info;

      //释放(一次释放即可)

      free(student);

      student = NULL;

    }

  • 相关阅读:
    java jar 后台运行
    【Objective-C】内存管理
    GitHub Gist 指南
    模板发送java邮件
    JDK环境配置
    新装mysql数据库登陆不上去(账号密码正确)
    一个简单的爬取b站up下所有视频的所有评论信息的爬虫
    hexo Nunjucks Errors 解决方法
    新版正方教务系统导出课程表-油猴脚本
    ACM-图论-同余最短路
  • 原文地址:https://www.cnblogs.com/zhangnianyong/p/12199964.html
Copyright © 2020-2023  润新知