彈性陣列存在於形如下面的結構體:
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...