码迷,mamicode.com
首页 > 编程语言 > 详细

0长数组介绍

时间:2020-01-16 12:37:10      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:避免   int   mem   null   指针   app   结构   实现   柔性数组   

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;

}

 

0长数组介绍

标签:避免   int   mem   null   指针   app   结构   实现   柔性数组   

原文地址:https://www.cnblogs.com/zhangnianyong/p/12199964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!