在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言柔性數組詳解

玩轉單片機 ? 來源:玩轉單片機 ? 2023-03-06 09:06 ? 次閱讀

下班寫文章難免會有些出錯,也感謝那些在后臺留言指出錯誤的讀者;表驅那篇推文存在數組越界問題,可以通過預先開辟一個大數組的方式解決,但這樣解決方式會存在資源浪費問題,如果想不浪費資源來解決數組溢出的問題,那就來看看柔性數組怎么樣!

|簡單介紹

C99中,結構體中的最后一個元素允許是未知大小的數組,這就叫作 柔性數組 。 柔性數組的特點:

結構體中柔性數組成員前面必須至少有一個其他成員。

sizeof返回的這種結構大小不包括柔性數組的內存。

包含柔性數組成員的結構用malloc()函數進行內存的動態分配。

#include
 
typedef struct 
{
    int length;
intarr[];
}data_t;
 
int main()
{
    data_t data1;
    printf("sizeof:%d
",sizeof(data1));
    return 0; 
}

注意:在DEV CPP中,屏蔽了第五行并不會報錯!

| 簡單使用

#include
#include


typedef struct 
{
    int length;
    int arr[];
}data_t;
 
int main()
{
    //為結構體及其柔性數組成員申請一塊連續的空間
    data_t *p=(data_t*)malloc(sizeof(data_t)+10*sizeof(int));
    if(NULL==p)
    {
        printf("malloc error
");
        return 0;
    }
    p->length=10;
    for(int i=0;ilength;i++)
    {
        p->arr[i]=i;//賦值
        printf("%d ",p->arr[i]);
    }
    printf("
");
    //重新調整所申請的空間,將柔性數組調整為40
    p=(data_t*)realloc(p,sizeof(int)+40);
    if(NULL==p)
    {
        printf("malloc error
");
        return 0;
    }
    p->length=40;
    for(int i=0;ilength;i++)
    {
        p->arr[i]=i;//賦值
        printf("%d ",p->arr[i]);
    }
    printf("
");
    //釋放內存
    free(p);
    p=NULL;
    return 0; 
}

| 優勢總結

柔性數組的特點在于只需要用一次malloc創建就可以,而且和結構體是在同一塊連續的空間,對比在結構體中放指針成員而言,可以減少內存碎片化,因為malloc申請的內存位置是任意的;柔性數組申請的內存更加集中,有利于查找使用;柔性數組只用開辟一次,有利于提高訪問速度;用malloc函數進行動態內存申請時,柔性數組的大小應該大于結構體的大小以便于柔性數組適應預期大小。 --END--

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3115

    瀏覽量

    75054
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140697
  • 函數
    +關注

    關注

    3

    文章

    4374

    瀏覽量

    64379
  • 數組
    +關注

    關注

    1

    文章

    419

    瀏覽量

    26408
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    11059

原文標題:C語言|柔性數組

文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    C語言數組詳解

    介紹C語言數組的知識點。
    的頭像 發表于 05-19 10:15 ?6669次閱讀

    C語言數組的用法

    C語言數組是一種數據結構,它可以存儲多個相同類型的數據,例如整數,字符,浮點數等。數組的每個元素都有一個索引,用來表示它在數組中的位置。
    的頭像 發表于 11-24 17:48 ?1646次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中<b class='flag-5'>數組</b>的用法

    C語言教程之查找數組中的最值

    C語言教程之查找數組中的最值,很好的C語言資料,快來學習吧。
    發表于 04-25 15:13 ?0次下載

    C語言學習數組的筆記

    C語言學習數組的筆記
    發表于 12-17 16:04 ?0次下載

    c語言二維數組定義及其規則詳解

    一維數組只有一個下標,,稱為一維數組,其數組元素也稱為單下標變量。在實際問題中有很多量是二維的或多維的,因此C語言允許構造多維
    發表于 11-16 08:49 ?2.2w次閱讀
    <b class='flag-5'>c</b><b class='flag-5'>語言</b>二維<b class='flag-5'>數組</b>定義及其規則<b class='flag-5'>詳解</b>

    c語言之字符數組詳解

    ",a[i][j]);}printf("\n");}} 在C語言中沒有專門的字符串變量,通常用一個字符數組來存放一個字符串。當把一個字符串存入數組時,也把結束符‘\0’存入
    發表于 11-16 10:22 ?2177次閱讀

    C語言數組詳解

    上述的語句把數組中第五個元素的值賦為 50.0。所有的數組都是以 0 作為它們第一個元素的索引,也被稱為基索引,數組的最后一個索引是數組的總大小減去 1。以下是上面所討論的
    的頭像 發表于 09-25 15:43 ?1.5w次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>數組</b><b class='flag-5'>詳解</b>

    為什么C語言函數不能返回數組

    C語言函數可以返回指針、結構體,為什么不能返回數組? 下面一步一步來分析: 1 函數不能返回數組C
    的頭像 發表于 03-29 11:18 ?2225次閱讀

    C語言總結_數組全方位練習

    C語言數組的練習題:涉及到數組插入、數組刪除、數組下標數據的左移右移、
    的頭像 發表于 08-14 09:34 ?1191次閱讀

    C語言總結_數組知識

    當前文章復盤C語言數組數組定義規則、數組空間類型、數組下標使用、
    的頭像 發表于 08-14 09:38 ?1589次閱讀

    C語言_數組的查找、替換、排序、拼接

    這篇文章主要是總結C語言的位運算幾個實戰例子,接著介紹數組的基本定義用法、數組排序、插入、拼接、刪除、字符串查找替換等。
    的頭像 發表于 08-14 09:48 ?2883次閱讀

    C語言-數組

    C語言數組是一個同類型數據的集合,主要用來存儲一堆同類型的數據。
    的頭像 發表于 08-14 09:59 ?1559次閱讀

    什么是柔性數組柔性數組有何優點

    C99中,結構體中的最后一個元素允許是未知大小的數組,這就叫作 柔性數組
    的頭像 發表于 09-14 10:34 ?1486次閱讀

    C語言如何創建數組

    C語言是一種非常強大和靈活的編程語言,它提供了若干數據類型來存儲和操作數據。其中之一就是數組,它可以用來存儲一系列具有相同數據類型的元素。本文將詳細介紹如何在
    的頭像 發表于 11-24 10:08 ?2485次閱讀

    c語言數組怎么定義

    C語言中,數組是一種用來存儲相同類型元素的數據結構。它可以存儲多個元素,并通過一個共同的名稱來引用這些元素。數組是一種很重要的數據結構,可以用于解決很多實際的問題。 在
    的頭像 發表于 11-24 10:11 ?3814次閱讀
    主站蜘蛛池模板: 免费黄色在线视频 | 男人的天堂一区二区视频在线观看 | 色涩网站在线观看 | 三级黄色片免费观看 | 中国一级特黄特级毛片 | 欧美精彩狠狠色丁香婷婷 | 九色视频在线播放 | 国产大片91精品免费观看不卡 | 日本乱妇 | 欧美爆插| 日本一区二区视频在线观看 | 韩国午夜精品理论片西瓜 | 免费网站黄| 农村妇女野外一级毛片 | 日韩一级视频 | 免费看黄视频 | 色拍拍视频 | 亚洲光棍天堂 | 一区二区在线观看高清 | 亚洲男人的天堂成人 | 婷婷开心六月久久综合丁香 | 九草伊人| 日本在线视频一区二区 | 狠色网 | 欧美在线小视频 | 午夜艹逼 | 亚洲视频在线一区二区 | 成人免费午间影院在线观看 | 久久香蕉综合精品国产 | 日日摸夜夜添免费毛片小说 | 在线视频影院 | 99香蕉国产 | 日本黄色免费大片 | 男女做视频网站免费观看 | 好大好硬好深好爽的视频 | 亚洲爱爱网 | 综合欧美一区二区三区 | 天天射天天操天天 | 色黄污在线看黄污免费看黄污 | 免费看一级视频 | 噜噜噜 综合 亚洲 |