在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C/ 關(guān)于C語言結(jié)構(gòu)體數(shù)組元素?cái)?shù)目定義的疑問

關(guān)于C語言結(jié)構(gòu)體數(shù)組元素?cái)?shù)目定義的疑問

這樣定義結(jié)構(gòu)體數(shù)組,是沒有問題的:

int nameCounter = 8;

struct data student[8];

從debugger里面能夠看到該結(jié)構(gòu)體數(shù)組的8個(gè)元素:

clipboard.png

但是如果把代碼改成


int nameCounter = 8;

struct data student[nameCounter];

則變成了這樣

clipboard.png

請問這是為什么呢?為什么可以通過下面這種方式去定義一個(gè)數(shù)組,卻不能定義一個(gè)結(jié)構(gòu)體數(shù)組?
是我的操作出現(xiàn)問題了嗎?

附:程序需求是要通過傳入的指針數(shù)組元素?cái)?shù)來自動(dòng)擴(kuò)充結(jié)構(gòu)體數(shù)組元素?cái)?shù)

感謝各位大佬解答

回答
編輯回答
孤客

具體的原因是C語言不是"動(dòng)態(tài)"的,你需要在代碼中明確指定變量所需要的內(nèi)存大小。這樣C才能在棧中給你分配大小,動(dòng)態(tài)規(guī)劃也是一樣,事先說明我要4個(gè)字節(jié)的棧內(nèi)存用來存指針,在運(yùn)行時(shí)再從堆里申請內(nèi)存。

2017年9月2日 09:45
編輯回答
負(fù)我心

反對樓上兩位
OP明顯是已經(jīng)通過編譯, 只不過沒有在symbol result里面顯示而已, 為什么兩位會(huì)腦補(bǔ)出"c語言不支持"?

c99開始標(biāo)準(zhǔn)就規(guī)定variable length array了, 并且gcc在c90/89時(shí)期就支持了擴(kuò)展, 不知道你們說的是哪個(gè)標(biāo)準(zhǔn).

至于為什么debug時(shí)看不到vla, 這和語言無關(guān), 只是clion自己的舉措罷了. 這就是原因, 如果你要繼續(xù)探究, 請去clion家里或者Stack Overflow提問"Why clion not support view the state of vla in debugger"

以前的大佬們都不來答題了, c版和c++版要丸...

踩的話如果不是很明顯應(yīng)該告知緣由, 我已經(jīng)注明了踩樓上兩位的理由了, 不知道踩我的那位是因?yàn)槭裁炊鹊? 討論問題就是討論問題, 別夾帶私人情感

2017年1月3日 20:04