最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言冷門知識之你可能沒聽過的柔性數(shù)組

 更新時間:2021年10月12日 10:19:13   作者:執(zhí)久呀  
柔性數(shù)組(Flexible Array)是引入的一個新特性,它允許你在定義結(jié)構體時創(chuàng)建一個空數(shù)組,而這個數(shù)組的大小可以在程序運行的過程中根據(jù)你的需求進行更改特別注意的一點是:這個空數(shù)組必須聲明為結(jié)構體的最后一個成員,并且還要求這樣的結(jié)構體至少包含一個其他類型的成員

一、簡述

在c99中有明確的規(guī)定允許結(jié)構體中最后一個數(shù)組大小是未知的。

柔性數(shù)組其實是結(jié)構體中的最后一個數(shù)組未說明大小,且結(jié)構體中至少包含一個以上其他類型,如

#include<stdio.h>
 
struct hei 
{
  int zeng;
  char shi;
 
 int arr[];//或者int arr[0];
 
}ma;
 
int main()
{
struct hei ma;
 
return 0
}

二、具體使用

1.用創(chuàng)建柔性數(shù)組的方法:

#include<stdio.h>   
#include<stdlib.h>                     
                       
#include<stdlib.h>//或者是#include<malloc.h>動態(tài)內(nèi)存函數(shù)的頭文件                    
struct d
{                                                                                    
  int nb;  
  int nn;                                 
  
  int arr[];                 
};                         
                                 
int main()                      
{
    struct d *p=(struct d*)malloc(sizeof(struct d)+5*sizeof(int));//分別給結(jié)構體中的除了柔
                                                  //性數(shù)組的其他類型和給柔性數(shù)組申請空間
     p->nb=100;
     p->nn=50;  
     
     for(int i=0;i<5;i++)
       {
         p->arr[i]=i;//賦值
         printf("%d ",p->arr[i]);
       }     
    struct d *pp=(struct d*)realloc(p,48); //重新調(diào)整所申請的空間,將柔性數(shù)組調(diào)整為40。
 
    if(pp!=NULL)
      {
        p=pp;
 
         for(i=5;i<10;i++)
         {
           p->arr[i]=i;//賦值
           printf("%d ",p->arr[i]);    
         } 
 
           free(p);
            p=NULL;
      }                                                                                                    
      return 0;                                                                           
}               

2.用普通的寫法

#include<stdio.h>
#include<stdlib.h>
struct bb
{
   int a;
   int *arr;
 
};
 int main()
{
  struct bb* p=(struct bb*)malloc(sizeof(struct bb));
 
   p->a=20;
   
   p->arr=(int*)malloc(5*sizeof(int));
 
   for(int i=0;i<5;i++)
      {  
       p->arr[i]=i;
       printf("%d ",p->arr[i]); 
  
      }
   int *ptr=(int*)realloc(p->arr,40);
  if(pp!=NULL)
   {
       p->arr=ptr;
     for(int i=5;i<10;i++)
        {
          int t=p->arr[i]=i;
          printf("%d ",t);
        }
 
   }
    free(p->arr); 
    p->arr=NULL;
    free(p);
   p=NULL;
     return 0;
 
}

三、柔性數(shù)組的特點

1.對比這兩種來看,柔性數(shù)組的特點在于只需要用一次malloc創(chuàng)建就可以,而普通的解法則需要兩

次,因為malloc申請的內(nèi)存位置是任意的,所以柔性數(shù)組可以減少內(nèi)存碎片化。

2.柔性數(shù)組申請的內(nèi)存更加集中,有利于查找使用。

3.sizeof求結(jié)構體大小時所求出的大小沒有包括柔性數(shù)組的大小。

4.用malloc函數(shù)進行動態(tài)內(nèi)存申請時,柔性數(shù)組的大小應該大于結(jié)構體的大小

以便于柔性數(shù)組適應預期大小。

5.柔性數(shù)組只用一次開辟,有利于提高訪問速度

------------------------------------------------------------------------------------------------------------------

小伙伴們有什么想法可以留言

到此這篇關于C語言冷門知識之你可能沒聽過的柔性數(shù)組的文章就介紹到這了,更多相關C語言 柔性數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言二分法求解方程根的兩種方法

    C語言二分法求解方程根的兩種方法

    這篇文章主要為大家詳細介紹了C語言二分法求解方程根的兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • VisualStudio2022下配置 OpenMP多線程編程環(huán)境與運行

    VisualStudio2022下配置 OpenMP多線程編程環(huán)境與運行

    本文主要介紹了VisualStudio2022下配置 OpenMP多線程編程環(huán)境與運行,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別

    c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別

    這篇文章主要介紹了c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別,需要的朋友可以參考下
    2014-07-07
  • c++中的繼承關系

    c++中的繼承關系

    繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O計的層次結(jié)構,體現(xiàn)了由簡單到復雜的認知過程,本文給大家介紹c++中的繼承關系,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • C語言實現(xiàn)二叉樹的搜索及相關算法示例

    C語言實現(xiàn)二叉樹的搜索及相關算法示例

    這篇文章主要介紹了C語言實現(xiàn)二叉樹的搜索及相關算法,結(jié)合具體實例形式分析了基于C語言創(chuàng)建、遍歷、搜索等相關算法與實現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • 解讀C++編程中類模板的三種特化

    解讀C++編程中類模板的三種特化

    這篇文章主要介紹了C++編程中類模板的三種特化,需要的朋友可以參考下
    2016-01-01
  • C++ 模擬實現(xiàn)list(迭代器)實現(xiàn)代碼

    C++ 模擬實現(xiàn)list(迭代器)實現(xiàn)代碼

    這篇文章主要介紹了C++ 模擬實現(xiàn)list(迭代器)實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2017-05-05
  • 快速學習六大排序算法

    快速學習六大排序算法

    這篇文章主要介紹了六大排序算法-插入排序、希爾排序、選擇排序、冒泡排序、堆排序、快速排序,需要學習的小伙伴可以參考這篇文章
    2021-08-08
  • C++11?condition_variable條件變量的用法說明

    C++11?condition_variable條件變量的用法說明

    這篇文章主要介紹了C++11?condition_variable條件變量的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 一文學會c語言結(jié)構體的定義和使用方法

    一文學會c語言結(jié)構體的定義和使用方法

    數(shù)組是一種數(shù)據(jù)形式,其特點是多個相同類型的元素集合起來,結(jié)構體是另一種重要的數(shù)據(jù)形式,特點是將不同類型的成員組合起來,下面這篇文章主要給大家介紹了關于c語言結(jié)構體的定義和使用方法的相關資料,需要的朋友可以參考下
    2022-11-11

最新評論

巩义市| 南华县| 茌平县| 大理市| 东乡族自治县| 赤城县| 青神县| 依兰县| 洛隆县| 南和县| 洪雅县| 香格里拉县| 凤凰县| 东莞市| 额尔古纳市| 理塘县| 桑日县| 六盘水市| 永安市| 兴城市| 新巴尔虎左旗| 大同县| 屏东县| 丰县| 延庆县| 濮阳县| 井陉县| 彭阳县| 都安| 邵东县| 甘谷县| 晋中市| 耿马| 博乐市| 新宁县| 平顺县| 长寿区| 慈溪市| 普定县| 新和县| 全州县|