招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > .NET技術(shù) > C語言可變長數(shù)組在GCC編譯器中的實現(xiàn)

C語言可變長數(shù)組在GCC編譯器中的實現(xiàn)

2013-06-05 09:26:21
來源:
[導(dǎo)讀] 在C99中新加入了對變長數(shù)組的支持,即數(shù)組的長度可以由某個非const變量來定義。可變數(shù)組的空間大小直到程序運行時才能確定,因此只有程序在...

在C99中新加入了對變長數(shù)組的支持,即數(shù)組的長度可以由某個非const變量來定義。可變數(shù)組的空間大小直到程序運行時才能確定,因此只有程序在運行時才能為程序分配空間。在gcc編譯器程序會在運行時根據(jù)實際指定的大小(變量當(dāng)前的值)調(diào)節(jié)esp的值,為數(shù)組在棧上分配適當(dāng)大小的空間。由于要在運行時才能為數(shù)組分配空間,在開始分配空間之前空間的大小是不確定的,因此分配空間的起始地址也是不確定的(例如要在棧上分配兩個可變長數(shù)組的情況下)。為了在以后的代碼中對可變長數(shù)組的內(nèi)容進(jìn)行引用操作,程序必須通過某種方式獲取可變長數(shù)組的地址。在gcc編譯器中會在相對于ebp固定的偏移量的棧上分配的一個固定大小的區(qū)域(稱為內(nèi)情向量)來記錄可變長數(shù)組的信息,如數(shù)組的開始地址等。后繼代碼通過內(nèi)情向量中的起始地址訪問可變長數(shù)組。

因為數(shù)組依靠在程序運行時動態(tài)的調(diào)整esp來分配空間,所以這種類型的數(shù)組只能夠定義在棧內(nèi),不能夠定義在數(shù)據(jù)段上(全局?jǐn)?shù)組,靜態(tài)數(shù)組)。

代碼

#include

#include

int main()

{

unsigned int size;

scanf("%d",&size);

int var[size]; //定義變長數(shù)組

if(size == 0)

{

printf("empty array\n");

return 0;

}

else

{

/*error: 'for' loop initial declarations are only allowed in C99 mode|

note: use option -std=c99 or -std=gnu99 to compile your code*/

for(int i = 0; i < size; i++)

{

printf("%d\t",var[i]);

}

}

return 0;

}

使用CodeBlocks編譯通過,在循環(huán)時使用C99標(biāo)準(zhǔn)代碼。編譯時要添加-std=c99參數(shù),可以在Settings菜單的Compiler and debugger下設(shè)置。

深圳北大青鳥

評論
專科什么專業(yè)好 專科什么時候開始錄取 專科錄取分?jǐn)?shù)線 高中生學(xué)什么專業(yè)工資比較高 專科錄取分?jǐn)?shù) 專科考不上怎么辦 專科計算機(jī)學(xué)校 專科分?jǐn)?shù)怎么算 一覽表 高中生該選什么專業(yè) 北大青鳥一覽表學(xué)費 高中畢業(yè)生學(xué)什么技能有優(yōu)勢 高考落榜怎么辦 專科多少分能上 專科都有哪些專業(yè) 專科電子商務(wù)課程 專科電腦學(xué)校 高中生學(xué)什么專業(yè)好 高中生報什么專業(yè)有前景 高中生學(xué)什么有前途? 初中生可以學(xué)什么技術(shù)? 專科畢業(yè)后怎么升本科 專科報什么專業(yè)好 初高中生適合學(xué)什么技術(shù)? 2016各行業(yè)平均工資 深圳北大青鳥學(xué)費一覽表 2017年高中畢業(yè)學(xué)什么好 高考如何選專業(yè) 2017熱門專業(yè)有哪些 中專職業(yè)技術(shù)學(xué)校 中專有什么專業(yè) 初中畢業(yè)學(xué)軟件開發(fā)難嗎 初中畢業(yè)學(xué)什么技術(shù)好 中專學(xué)校有哪些 中專學(xué)什么專業(yè)好 中專學(xué)什么好 中考沒考上怎么辦 中考落榜生怎么辦 怎么樣學(xué)電腦專業(yè) 中專學(xué)歷學(xué)什么好 職校學(xué)什么專業(yè)好 職業(yè)技術(shù)學(xué)校專業(yè) 職業(yè)技術(shù)學(xué)校有哪些專業(yè) 職業(yè)高中有哪些專業(yè) 職校讀什么專業(yè)好
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
在线观看免费不打码片 | 亚洲韩国日本一区 | 色综久久综合桃花网 | 亚洲成成熟女人专区 | 中文字幕日本久久2019 | 特黄国产禁在线观看 |