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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

[轉(zhuǎn)]C語(yǔ)言變長(zhǎng)數(shù)組 struct中char data[0]的用法

2019-11-10 18:19:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原文:http://www.xuebuyuan.com/1731866.html

摘要:在實(shí)際的編程中,我們經(jīng)常需要使用變長(zhǎng)數(shù)組,但是C語(yǔ)言并不支持變長(zhǎng)的數(shù)組。此時(shí),我們可以使用結(jié)構(gòu)體的方法實(shí)現(xiàn)C語(yǔ)言變長(zhǎng)數(shù)組。

struct MyData {  int nLen;  char data[0];}; PS:必須將指針定義在struct的末尾,指針的類(lèi)型也可以不為char。在結(jié)構(gòu)中,data是一個(gè)數(shù)組名;但該數(shù)組沒(méi)有元素;該數(shù)組的真實(shí)地址緊隨結(jié)構(gòu)體MyData之后,而這個(gè)地址就是結(jié)構(gòu)體后面數(shù)據(jù)的地址(如果給這個(gè)結(jié)構(gòu)體分配的內(nèi)容大于這個(gè)結(jié)構(gòu)體實(shí)際大小,后面多余的部分就是這個(gè)data的內(nèi)容);這種聲明方法可以巧妙的實(shí)現(xiàn)C語(yǔ)言里的數(shù)組擴(kuò)展。實(shí)際用時(shí)采取這樣:struct MyData *p = (struct MyData *)malloc(sizeof(struct MyData )+strlen(str))這樣就可以通過(guò)p->data 來(lái)操作這個(gè)str。

程序?qū)嵗?/p>

struct MyData { int nLen; char data[0];};
int main(){   int nLen = 10;   char str[10] = "123456789";   cout << "Size of MyData: " <<sizeof(MyData) << endl;   MyData *myData = (MyData*)malloc(sizeof(MyData) +10);   memcpy(myData->data, str, 10);   cout << "myData's Data is: " << myData->data << endl;   free(myData);   return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 化德县| 嵊泗县| 柳江县| 玉林市| 修水县| 海伦市| 江口县| 隆回县| 黔江区| 稻城县| 鸡西市| 天台县| 张北县| 出国| 石门县| 霍山县| 博湖县| 英吉沙县| 青河县| 鹤壁市| 镇宁| 娄底市| 揭阳市| 通化县| 贵南县| 龙江县| 水富县| 红桥区| 锡林郭勒盟| 盐池县| 乌苏市| 灵寿县| 青海省| 灵台县| 石嘴山市| 孟津县| 墨脱县| 宁波市| 越西县| 延长县| 清苑县|