国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 郁南县| 中方县| 罗定市| 万年县| 桐城市| 杭锦后旗| 茶陵县| 平乡县| 左权县| 长岛县| 融水| 毕节市| 大足县| 日照市| 北票市| 宁城县| 黔西县| 海兴县| 鄱阳县| 延安市| 兴宁市| 新田县| 三原县| 五峰| 门头沟区| 通化市| 竹北市| 龙井市| 四平市| 齐齐哈尔市| 隆回县| 邛崃市| 绥阳县| 卫辉市| 普陀区| 东宁县| 新乐市| 涿鹿县| 泉州市| 徐州市| 焉耆|