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

首頁 > 學院 > 開發設計 > 正文

[轉]C語言變長數組 struct中char data[0]的用法

2019-11-10 18:41:12
字體:
來源:轉載
供稿:網友

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

摘要:在實際的編程中,我們經常需要使用變長數組,但是C語言并不支持變長的數組。此時,我們可以使用結構體的方法實現C語言變長數組。

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

程序實例:

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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额敏县| 交口县| 门头沟区| 灵石县| 三门峡市| 库车县| 丰县| 桃园县| 平湖市| 东莞市| 伽师县| 留坝县| 玉溪市| 乌苏市| 黎平县| 新竹市| 南华县| 安陆市| 保德县| 肇源县| 井冈山市| 怀安县| 金堂县| 凤翔县| 许昌市| 长丰县| 扶余县| 高青县| 平罗县| 临邑县| 改则县| 姜堰市| 来安县| 诸暨市| 沁源县| 海原县| 盐山县| 肇东市| 茶陵县| 茶陵县| 绩溪县|