c++和python先學(xué)哪個(gè) 聲明變量什么意思?
聲明變量什么意思?變量在使用前已定義或聲明。變量聲明意味著向程序指示變量的類(lèi)型和名稱(chēng)。變量該怎么聲明?如果是C語(yǔ)言,則必須在使用程序中涉及的每個(gè)變量之前提前聲明。例如,下面的語(yǔ)句:void main(
聲明變量什么意思?
變量在使用前已定義或聲明。變量聲明意味著向程序指示變量的類(lèi)型和名稱(chēng)。
變量該怎么聲明?
如果是C語(yǔ)言,則必須在使用程序中涉及的每個(gè)變量之前提前聲明。例如,下面的語(yǔ)句:void main(){inti,J,K,Li=10J=20K=30L=40}如果是C語(yǔ)言,那么可以在臨時(shí)使用時(shí)聲明變量。例如:voidmain(){inti=10For(intj=1J<=20j)/*此語(yǔ)句在C語(yǔ)言中是不允許的。必須預(yù)先聲明變量J,然后才能使用for循環(huán)語(yǔ)句*/printf(“at”)printf(“I=Dn”,I)}]~。變量聲明有兩種情況:
1。一是需要建立存儲(chǔ)空間。例如,int a在聲明時(shí)已經(jīng)創(chuàng)建了一個(gè)存儲(chǔ)空間。
2. 二是不需要建立存儲(chǔ)空間。例如:extern int a,其中變量a在另一個(gè)文件中定義。
前者是“定義聲明”或“定義”,后者是“引用聲明”。從廣義上講,一個(gè)聲明包含定義,也就是說(shuō),一個(gè)定義是一個(gè)聲明的特例,所以不是所有的聲明都是定義,比如int,它既是一個(gè)語(yǔ)句,也是一個(gè)定義。然而,對(duì)于externa來(lái)說(shuō),它只是一個(gè)聲明,而不是一個(gè)定義。一般來(lái)說(shuō),我們經(jīng)常這樣描述。我們稱(chēng)建立空間的聲明為“定義”,不建立存儲(chǔ)空間的聲明為“聲明”。很明顯,我們這里所指的聲明范圍很窄,即狹義的聲明,即性質(zhì)未定義的聲明,例如:在main函數(shù)中:
int main(){
extern int a
//這是一個(gè)聲明而不是一個(gè)定義,聲明a是一個(gè)被定義的外部變量defined
//注意:在聲明外部變量時(shí),可以刪除變量類(lèi)型,如:extern A]]dosth()//execute function
}
int A//外部變量的定義不同于外部變量的聲明。外部變量的定義只能是一次,并且它的位置在所有函數(shù)之外。一個(gè)外部變量在同一個(gè)文件中的聲明可以是多次的,它可以在一個(gè)函數(shù)內(nèi)(需要在該函數(shù)中聲明哪個(gè)函數(shù))到函數(shù)外(在外部變量的定義點(diǎn)之前)。系統(tǒng)根據(jù)外部變量的定義(而不是根據(jù)外部變量的聲明)分配存儲(chǔ)空間。
對(duì)于外部變量,只能在“定義”中進(jìn)行初始化,而不能在“聲明”中進(jìn)行初始化。所謂“聲明”的功能是聲明變量是一個(gè)稍后定義的外部變量。它只是一個(gè)“聲明”,是為了“提前引用變量”。Extern只做一個(gè)聲明,不做任何定義。
變量怎么聲明?
變量聲明有兩種情況:(1)一種是建立存儲(chǔ)空間(定義和聲明)。例如,int a在聲明時(shí)已經(jīng)創(chuàng)建了一個(gè)存儲(chǔ)空間。(2) 二是不需要建立存儲(chǔ)空間(聲明)。例如:extern int a,其中變量a在另一個(gè)文件中定義。前者是“定義聲明”或“定義”,后者是“引用聲明”。從廣義上講,聲明包含定義,但并非所有聲明都是定義。例如,int a既是聲明又是定義。然而,對(duì)于externa來(lái)說(shuō),它只是一個(gè)聲明,而不是一個(gè)定義。一般來(lái)說(shuō),我們經(jīng)常這樣描述。我們將建立空間的聲明稱(chēng)為“定義”,當(dāng)我們不需要建立存儲(chǔ)空間時(shí),我們將其稱(chēng)為“聲明”。
變量的聲明和定義有什么區(qū)別?
首先,從C語(yǔ)言的特點(diǎn)來(lái)看,它是一種靜態(tài)語(yǔ)言,所有變量都必須有一個(gè)類(lèi)型,無(wú)論是基本類(lèi)型,如int、char、float、double,還是structure、union、enumeration等用戶定義的類(lèi)型,只要是type關(guān)鍵字,就可以用來(lái)定義變量。另外,還有一種叫做指針的變量類(lèi)型,分為變量指針和函數(shù)指針。變量指針指向特定數(shù)據(jù)類(lèi)型的地址,函數(shù)指針指向函數(shù)的入口地址??梢酝ㄟ^(guò)組合變量類(lèi)型和*符號(hào)來(lái)聲明指針。這里需要注意的是,指針是一個(gè)遞歸定義,也就是說(shuō),指針可以指向指針,這有點(diǎn)尷尬。核心意思是指針可以一直指向。
函數(shù)指針類(lèi)型的變量定義有點(diǎn)特殊。下面是一個(gè)示例:
definition:typedef void(*myfun)(int)
void funimp(int param){/*function content*/}
use:myfun=funimpmyfun(10)
總之,請(qǐng)記住定義變量的關(guān)鍵點(diǎn)必須有一個(gè)類(lèi)型,這與Python和其他動(dòng)態(tài)語(yǔ)言不同。為了更好地了解程序的運(yùn)行狀態(tài),最好了解每種類(lèi)型的變量所占用的內(nèi)存大小。這是非常重要的。許多錯(cuò)誤是由不同系統(tǒng)中變量占用的內(nèi)存大小不同造成的。例如,對(duì)于int類(lèi)型,在32位系統(tǒng)中需要4個(gè)字節(jié),在64位系統(tǒng)中需要8個(gè)字節(jié)。此外,我們還應(yīng)該清楚內(nèi)存中數(shù)據(jù)的大小模式,即高位字節(jié)是第一位的還是狀態(tài)字節(jié)是第一位的。