中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

昔陽(yáng)網(wǎng)站建設(shè)注冊(cè)域名在哪里注冊(cè)

昔陽(yáng)網(wǎng)站建設(shè),注冊(cè)域名在哪里注冊(cè),小區(qū)服務(wù)網(wǎng)站怎么做,天津建設(shè)廳網(wǎng)站目錄什么是柔性數(shù)組柔性數(shù)組的使用什么是柔性數(shù)組 柔性數(shù)組是在C99中定義的 結(jié)構(gòu)體的最后一個(gè)元素允許是未知大小的數(shù)組,這就叫柔性書(shū)組 柔性數(shù)組的長(zhǎng)度可以寫(xiě)成0,也可以不規(guī)定數(shù)組長(zhǎng)度 下面兩種寫(xiě)法都是正確的 struct S { int i; int a[0];//柔性數(shù)…

目錄

  • 什么是柔性數(shù)組
  • 柔性數(shù)組的使用

什么是柔性數(shù)組

柔性數(shù)組是在C99中定義的

結(jié)構(gòu)體的最后一個(gè)元素允許是未知大小的數(shù)組,這就叫柔性書(shū)組

柔性數(shù)組的長(zhǎng)度可以寫(xiě)成0,也可以不規(guī)定數(shù)組長(zhǎng)度
下面兩種寫(xiě)法都是正確的

struct S
{
int i;
int a[0];//柔性數(shù)組成員
}
struct S
{
int i;
int a[];//柔性數(shù)組成員
}
  • 結(jié)構(gòu)體中的柔性數(shù)組成員前面至少有一個(gè)其他成員
  • sizeof返回的這種結(jié)構(gòu)體的大小不包括柔性數(shù)組的大小
  • 包含柔性數(shù)組成員的結(jié)構(gòu)體用malloc ()函數(shù)進(jìn)行內(nèi)存的動(dòng)態(tài)分配,并且分配的內(nèi)存應(yīng)該大于結(jié)構(gòu)的大
    小,以適應(yīng)柔性數(shù)組的預(yù)期大小。

柔性數(shù)組的使用

typedef struct S
{int i;char c[];//c是柔性數(shù)組
}S;int main()
{S* p = (S*)malloc(sizeof(S) + 10 * sizeof(char));if (p == NULL){perror("malloc");return 1;}p->i = 10;for (int i = 0; i < 10; i++){p->c[i] = 'a';}free(p);p = NULL;return 0;
}

malloc開(kāi)辟空間時(shí),開(kāi)辟空間大小為sizeof(S) + 10 * sizeof(char),前面的sizeof(S)其實(shí)是表示結(jié)構(gòu)體中int i的大小,后面則是給c開(kāi)辟了10個(gè)字節(jié)大小的連續(xù)空間

如果覺(jué)得前面開(kāi)辟空間小了,數(shù)組c不夠長(zhǎng),還可以用realloc函數(shù)對(duì)內(nèi)存大小進(jìn)行調(diào)整

int main()
{S* p = (S*)malloc(sizeof(S) + 10 * sizeof(char));if (p == NULL){perror("malloc");return 1;}p->i = 10;S* ptr = (S*)realloc(p, sizeof(S) + 20 * sizeof(char));if (ptr == NULL){perror("realloc");return 1;}p = ptr;for (int i = 0; i < 20; i++){p->c[i] = 'a';}free(p);p = NULL;return 0;
}

其實(shí)我們也可以寫(xiě)出另一種形式的結(jié)構(gòu)體,它的功能與柔性數(shù)組類似

typedef struct S2
{it i;char* c;
}S2;

對(duì)于這個(gè)結(jié)構(gòu)體的使用如下:

int main()
{S2* p = (S2*)malloc(sizeof(S2));p->i = 10;p->c = (char*)malloc(10 * sizeof(char));for (int i = 0; i < 10; i++){p->c[i] = 'a';}free(p->c);p->c = NULL;free(p);p = NULL;return 0;
}

為了使用這個(gè)結(jié)構(gòu)體,需要先給結(jié)構(gòu)體開(kāi)辟一個(gè)空間S2* p = (S2*)malloc(sizeof(S2));然后再需要?jiǎng)討B(tài)開(kāi)辟一個(gè)塊空間讓c指向

這種寫(xiě)法需要開(kāi)辟2次內(nèi)存,同樣在最后釋放內(nèi)存是,也需要free2次

所以就可以看出柔性數(shù)組的好處:
第 一個(gè)是方便內(nèi)存釋放

因?yàn)椴徽撌俏覀冊(cè)谑褂脮r(shí)或給別人寫(xiě)一個(gè)函數(shù)讓別人使用時(shí),如果在里面做了二次內(nèi)存分配,可能別人使用時(shí)并不會(huì)知道結(jié)構(gòu)體內(nèi)部還有一個(gè)成員需要釋放。所以就需要把內(nèi)存一次性分配好,在最后釋放一次內(nèi)存就可以了

第二個(gè)是加快訪問(wèn)

如果二次內(nèi)存分配,就會(huì)在內(nèi)存中產(chǎn)生一些內(nèi)存碎片,這樣即浪費(fèi)了空間也不利于訪問(wèn)

http://www.risenshineclean.com/news/45773.html

相關(guān)文章:

  • php做門戶網(wǎng)站2024年最新時(shí)事新聞
  • 電影頻道做的網(wǎng)站廣告谷歌手機(jī)版瀏覽器官網(wǎng)
  • 小企業(yè)網(wǎng)絡(luò)營(yíng)銷外包南寧seo產(chǎn)品優(yōu)化服務(wù)
  • wordpress建站好嗎武漢seo搜索優(yōu)化
  • 網(wǎng)絡(luò)營(yíng)銷常用的方法seo 優(yōu)化技術(shù)難度大嗎
  • 專業(yè)做網(wǎng)站公司排名人工智能培訓(xùn)機(jī)構(gòu)哪個(gè)好
  • 做壁畫(huà)的網(wǎng)站湖南網(wǎng)站優(yōu)化
  • 如何在搜索中找到自己做的網(wǎng)站設(shè)計(jì)模板網(wǎng)站
  • msn網(wǎng)站制作windows優(yōu)化大師怎么用
  • 做商業(yè)廣告有什么網(wǎng)站好推銷的北大青鳥(niǎo)職業(yè)技術(shù)學(xué)院簡(jiǎn)介
  • 女人能做網(wǎng)站開(kāi)發(fā)嗎世界杯比分
  • 做網(wǎng)站可以申請(qǐng)專利嗎優(yōu)化防疫措施
  • 非響應(yīng)式網(wǎng)站改響應(yīng)式百度推廣賬號(hào)
  • 淘寶了做網(wǎng)站賣什么好百度怎么優(yōu)化網(wǎng)站關(guān)鍵詞
  • 網(wǎng)站開(kāi)發(fā)實(shí)施計(jì)劃與安排網(wǎng)絡(luò)推廣培訓(xùn)
  • 定制網(wǎng)站前準(zhǔn)備手機(jī)版怎么用百度快照
  • 廣東企業(yè)網(wǎng)站模板推薦長(zhǎng)春網(wǎng)站優(yōu)化團(tuán)隊(duì)
  • 保定專業(yè)做網(wǎng)站seo網(wǎng)絡(luò)貿(mào)易網(wǎng)站推廣
  • 包頭教育平臺(tái)網(wǎng)站建設(shè)seo網(wǎng)站推廣免費(fèi)
  • 網(wǎng)站建設(shè)工具有哪些寧波seo整體優(yōu)化公司
  • 公安網(wǎng)站建設(shè)自查報(bào)告我要學(xué)電腦哪里有短期培訓(xùn)班
  • 企業(yè)推廣網(wǎng)站百度免費(fèi)推廣平臺(tái)
  • 專業(yè)做網(wǎng)站產(chǎn)品上架的有嗎百度seo規(guī)則最新
  • 深圳商城網(wǎng)站建設(shè)報(bào)價(jià)沈陽(yáng)seo按天計(jì)費(fèi)
  • 友誼路街道網(wǎng)站建設(shè)google登錄入口
  • 西安 網(wǎng)站 制作百度學(xué)術(shù)論文查重入口
  • 做網(wǎng)站一般是怎么盈利店鋪100個(gè)關(guān)鍵詞
  • 建設(shè)銀行成都開(kāi)發(fā)中心網(wǎng)站seo愛(ài)站網(wǎng)
  • 網(wǎng)站上的個(gè)人詞條怎么做的鄭州外貿(mào)網(wǎng)站推廣
  • 微信可以上網(wǎng)長(zhǎng)沙正規(guī)競(jìng)價(jià)優(yōu)化服務(wù)