熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
來(lái)學(xué)習(xí),結(jié)構(gòu)體的賦值,不是非常懂,但沒(méi)在外面賦值過(guò)。 |
因?yàn)閏語(yǔ)言是基于函數(shù)的 ,只有函數(shù)里的代碼才能被正常調(diào)用執(zhí)行,在函數(shù)外的代碼,如非特殊處理是沒(méi)有機(jī)制去執(zhí)行的(startup調(diào)用main是特例)。所以函數(shù)外只能定義變量,定義時(shí)可以賦初值,但不能單純地賦值。 |
所謂的函數(shù)外賦值,還是在函數(shù)內(nèi),無(wú)非在一個(gè)隱藏的函數(shù),并被startup調(diào)用后賦值,從效率來(lái)講,還不如在main函數(shù)賦值來(lái)的快。你仿真一下,看看哪個(gè)快就知道了。 |
定義時(shí)初始賦值,重新賦值必須在函數(shù)內(nèi)發(fā)生了運(yùn)算,既定規(guī)則,沒(méi)有道理可言 |
寫(xiě)在函數(shù)外是全局變量,用完后不釋放RAM,寫(xiě)在函數(shù)內(nèi)是局部變量,退出函數(shù)就釋放RAM,如果MCU的RAM不多,如只有128個(gè)字節(jié),如果你定義的全局變量超過(guò)128字節(jié),你的程序運(yùn)行會(huì)出錯(cuò)。 |
面向函數(shù)的語(yǔ)言,所有語(yǔ)句,必須在函數(shù)內(nèi)。 |
函數(shù)外定義變量時(shí)可以同時(shí)賦值。 要是想在函數(shù)外賦值,要定義變量的時(shí)候進(jìn)行初始化賦值 ![]() |
變量賦值不一定要在函數(shù)中進(jìn)行,如果在函數(shù)外賦值必須要在定義變量的時(shí)候同時(shí)賦值,也就說(shuō)定義與賦值要合成一條語(yǔ)句。因?yàn)槌绦蚴窃趍ain函數(shù)順序開(kāi)始,需要哪個(gè)函數(shù)就會(huì)執(zhí)行該函數(shù),需要哪個(gè)變量就調(diào)用那個(gè)變量,若在本帖中圖2所示中打印c2[0].b并不會(huì)得到22的值,因?yàn)樵诰幾g器看來(lái)你只是聲明了該變量未對(duì)其賦值,因?yàn)槌绦驔](méi)有執(zhí)行賦值那條語(yǔ)句。 |
要是想在函數(shù)外賦值,要定義變量的時(shí)候進(jìn)行初始化賦值,C語(yǔ)言本身就不允許你這種操作 |
不一定,函數(shù)外定義變量時(shí)可以同時(shí)賦值。 |
Powered by 單片機(jī)教程網(wǎng)