色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    3020

    瀏覽量

    74014
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136714
  • 函數
    +關注

    關注

    3

    文章

    4329

    瀏覽量

    62576
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    25940
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    10840

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

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

收藏 人收藏

    評論

    相關推薦

    C語言數組詳解

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

    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 ?2077次閱讀

    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 ?2001次閱讀

    C語言指針和數組的區別

    C語言教程中我們使用通過數組名通過偏移和指針偏移都可以遍歷數組,那么指針和數組到底有什么區別??
    的頭像 發表于 07-18 16:29 ?1927次閱讀

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

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

    C語言總結_數組知識

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

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

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

    C語言-數組

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

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

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

    C語言如何創建數組

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

    c語言數組怎么定義

    C語言中,數組是一種用來存儲相同類型元素的數據結構。它可以存儲多個元素,并通過一個共同的名稱來引用這些元素。數組是一種很重要的數據結構,可以用于解決很多實際的問題。 在
    的頭像 發表于 11-24 10:11 ?3067次閱讀
    主站蜘蛛池模板: 亚洲欧美日韩人成| 久久机热免费视频| 亚洲 综合 自拍 精品 在线| 高清撒尿hdtube撒尿| 日本久久中文字幕| 俄罗斯mm| 天美麻豆成人AV精品视频| 国产成人ae在线观看网站站 | 狠狠干2022| 亚洲精品视频观看| 娇小老少配xxxxx| 伊人久久影院| 麻豆婷婷狠狠色18禁久久| 97成人在线| 欧洲精品一区二区不卡观看| YIN荡的老师系列第6部分视频| 人妻中文字幕乱人伦在线| 苍井空a 集在线观看网站| 色呦呦导航| 国产午夜亚洲精品区| 亚洲一区免费香蕉在线| 久久久久久久网站| 99国产这里只有精品视频| 人妻免费久久久久久久了| 国产成人精品免费视频下载| 午夜无码片在线观看影院| 国内国外精品影片无人区| 影音先锋男人资源813.| 美女张开腿让男人桶爽无弹窗 | 美女屁股软件| 爱暖暖1000部免费| 丝袜美女自摸| 红杏俱乐部| 91麻精品国产91久久久久| 日本超A大片在线观看| 国产精亚洲视频综合区| 亚洲一区二区三区高清网| 美女伸开两腿让我爽| 成人特级毛片| 亚洲国产第一区二区三区| 久久久精品成人免费看|