結構體 類中的彈性陣列 元素個數為0的陣列

2021-09-09 04:11:39 字數 649 閱讀 7592

彈性陣列存在於形如下面的結構體:

class czerotest

;

類 czerotest中的 int items即為該類的彈性陣列,也可定義為 int items[0],可以發現sizeof(czerotest)為4,即彈性陣列的大小為0,不占用空間。

之所以稱為彈性陣列,是因為給該型別的指標可以通過malloc或者new的方式給其陣列分配一定的空間,如:

czerotest *ztob;

ztob = (czerotest *)malloc(sizeof(czerotest) + 50 * sizeof(int)); //c語言方式

ztob = (czerotest *)new char(sizeof(czerotest) + 50 * sizeof(int)); //c++語言方式

上面**則給ztob物件中的彈性陣列分配了50個int型空間的大小。items的空間位址在ncnt空間位址的後面。

彈性陣列的釋放:

free(ztob);    //c語言方式

delete ztob; //c++語言方式

從c99標準之後,就開始支援這種彈性陣列

基礎 結構體 結構體中的柔性陣列

typedef struct test 造成字串與結構體內存是分離的,有時候不利於操作,例如 複製和訪問的時候,需要做些額外操作。char a hello world test stptest test malloc sizeof test strlen a 1 strcpy char stptes...

關於元素個數為0的陣列use心得

最近,工作時看了別人的 有個chance接觸這個0陣列的使用。中要實現類似這麼個功能 記憶體中有一段快取區buf,buf前8位元組存倆個int型值,接著是一段字串 char buf 100 memset buf,0,100 int id 9 int len 10 char msg 123456 me...

和為定值的兩個陣列元素

在陣列中找到和為定值的兩個數,返回陣列下標。這個題目就是乙個排序的問題,但是不能改變陣列,用快排的方式儲存陣列的索引值即可,上 include include include include using namespace std void quicksort index int arr,int i...