国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++學(xué)習(xí)筆記——柔性數(shù)組

2019-11-08 18:30:41
字體:
供稿:網(wǎng)友

1、問題來源

在博文數(shù)據(jù)結(jié)構(gòu)和算法——kd樹中,在構(gòu)建kd樹的過程中,有如下的一段代碼:

#define MAX_LEN 1024typedef struct KDtree{ double data[MAX_LEN]; // 數(shù)據(jù) int dim; // 選擇的維度 struct KDtree *left; // 左子樹 struct KDtree *right; // 右子樹}kdtree_node;

在這段代碼中,為了存儲數(shù)據(jù),申請了最大長度為1024的double型數(shù)組。若是數(shù)據(jù)的長度遠遠小于MAX_LEN,這樣的寫法,是及其浪費空間的。

2、解決的方法

在C語言中,有如下的一種構(gòu)建方法:

struct mumble { //stuff     char pc[]; };

這種寫法稱為柔性數(shù)組,也叫伸縮性數(shù)組,即變長數(shù)組。即聲明結(jié)構(gòu)體的時候不指定聲明的數(shù)組的大小,等到需要使用的時候根據(jù)具體情況申請足夠大小的空間。

#include <stdio.h>#include <string.h>#include <malloc.h>typedef struct mytest{ int a; double b; int c[];//c不占用空間,只是作為一個符號地址存在,而且必須是結(jié)構(gòu)體的最后一個成員}mt;int main(){ int t[10] = {0,1,2,3,4,5,6,7,8,9}; mt* pmt = (mt*)malloc(sizeof(mt) + sizeof(int)*10 + 1); int i = 0; if (NULL != pmt){ pmt->a = 1; pmt->b = 11; for (i = 0; i < 10; i++){ (pmt->c)[i] = t[i]; } } f注意:柔性數(shù)組只能為結(jié)構(gòu)體的最后一個成員。

參考文獻

柔性數(shù)組-讀《深度探索C++對象模型》有感
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 邢台市| 泽库县| 瑞昌市| 咸丰县| 黑山县| 天等县| 巴林左旗| 鹤岗市| 米易县| 安泽县| 曲麻莱县| 金沙县| 广德县| 珲春市| 廉江市| 尖扎县| 德庆县| 文成县| 丽江市| 旅游| 永济市| 辛集市| 凤翔县| 镇安县| 余姚市| 三原县| 咸丰县| 靖宇县| 荣昌县| 长阳| 新民市| 通州市| 永新县| 博罗县| 秦安县| 邢台市| 铜川市| 久治县| 布尔津县| 环江| 怀安县|