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

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

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

2019-11-10 19:09:22
字體:
來源:轉載
供稿:網友

原文: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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金坛市| 菏泽市| 汝南县| 绵阳市| 三亚市| 无为县| 榆林市| 醴陵市| 静乐县| 莆田市| 砀山县| 连南| 喀什市| 商洛市| 曲松县| 田林县| 随州市| 盱眙县| 大名县| 德保县| 靖远县| 阳西县| 介休市| 武汉市| 荥阳市| 青川县| 年辖:市辖区| 尚义县| 额济纳旗| 来安县| 花垣县| 高安市| 焦作市| 清镇市| 衡阳市| 永靖县| 南和县| 岢岚县| 台南市| 观塘区| 育儿|