整形 為什么不用整形變量來(lái)存儲(chǔ)而發(fā)明指針變量呢?
為什么不用整形變量來(lái)存儲(chǔ)而發(fā)明指針變量呢?事實(shí)上,從實(shí)現(xiàn)的角度來(lái)看,指針是一個(gè)整數(shù)變量,它只存儲(chǔ)一個(gè)地址值。所謂的指針概念和指針類(lèi)型(不同類(lèi)型的指針可能有相同的值,但它們不相等,1次操作獲得的新地址也
為什么不用整形變量來(lái)存儲(chǔ)而發(fā)明指針變量呢?
事實(shí)上,從實(shí)現(xiàn)的角度來(lái)看,指針是一個(gè)整數(shù)變量,它只存儲(chǔ)一個(gè)地址值。
所謂的指針概念和指針類(lèi)型(不同類(lèi)型的指針可能有相同的值,但它們不相等,1次操作獲得的新地址也不同)是由編譯器強(qiáng)加的。編譯之后,指針實(shí)際上是地址的整數(shù)值,沒(méi)有任何額外的類(lèi)型信息。
因此,發(fā)明指針的概念是為了讓程序員更好地理解它,并約束編譯器使程序更無(wú)錯(cuò)誤。
指向整型數(shù)組的指針如何用?
int(*P)[10
()的定義具有高優(yōu)先級(jí)。首先,它指出P是指向整數(shù)類(lèi)型的一維數(shù)組的指針。這個(gè)一維數(shù)組的長(zhǎng)度是10,也可以說(shuō)是P的步長(zhǎng),也就是說(shuō),在執(zhí)行p1時(shí),P應(yīng)該跨越10個(gè)整數(shù)數(shù)據(jù)的長(zhǎng)度。
因此數(shù)組指針也稱(chēng)為指向一維數(shù)組的指針或行指針。
所以我們必須分別賦值。
這樣,兩者之間的區(qū)別就很明顯了。數(shù)組指針只是一個(gè)指針變量,在C語(yǔ)言中似乎是用來(lái)指向二維數(shù)組的。它占用內(nèi)存中指針的存儲(chǔ)空間。指針數(shù)組是一組指針變量,它們以數(shù)組的形式存儲(chǔ)在內(nèi)存中,占用多個(gè)指針的存儲(chǔ)空間。
短整形,整形,長(zhǎng)整形,長(zhǎng)指針,各占幾位呢?
在不同的操作系統(tǒng)和編譯環(huán)境中,指針類(lèi)型占用的字節(jié)數(shù)是不同的。一般來(lái)說(shuō),在編譯和生成16位代碼時(shí),指針占用2個(gè)字節(jié)。編譯和生成32位代碼時(shí),指針占用4個(gè)字節(jié)。編譯和生成64位代碼時(shí),指針占用8個(gè)字節(jié)。我們通常生成32位程序,所以指針占用4字節(jié),整形量也占用4字節(jié)。因此指針占用的空間與整數(shù)相同。
(C語(yǔ)言)地址為什么要變成指針才能賦值給指針變量呢?
指針是地址。所以你的問(wèn)題不對(duì)。
我的理解是,我想問(wèn)為什么變量需要取地址,然后給指針變量賦值,即int a,*P P=&a
讓我們來(lái)談?wù)勔粋€(gè)小概念,數(shù)字23,在句子“我今年23歲”中,23的意思是年齡;在句子“我的偶像穿著23號(hào)籃球服”,23是籃球服的號(hào)碼。也就是說(shuō),數(shù)字23在不同的句子環(huán)境中具有不同的語(yǔ)義。
在本文中,我們定義了兩個(gè)成形變量。在內(nèi)存中,它們都存儲(chǔ)二進(jìn)制代碼,但語(yǔ)義不同。一個(gè)用于存儲(chǔ)整數(shù),另一個(gè)用于存儲(chǔ)指向成形變量的指針??傊?,這兩個(gè)變量是不一樣的。一個(gè)是存儲(chǔ)常用值的公共變量,另一個(gè)是存儲(chǔ)另一個(gè)變量的物理地址的特殊變量(因此我們需要添加*符號(hào)來(lái)區(qū)分它)。
你能理解嗎?如果你不明白,你可以請(qǐng)我再回答這個(gè)問(wèn)題。
c語(yǔ)言的指針中*操作符的本質(zhì)是什么?
總結(jié)一下:
1。*首先,一個(gè)算術(shù)運(yùn)算符
2。定義指針。例如,下面的定義語(yǔ)句:
int a
定義一個(gè)變量a,其數(shù)據(jù)類(lèi)型為int
看下面的定義語(yǔ)句:
int*b
定義一個(gè)int*變量,如何理解int*可以如下:
*b是int type,它對(duì)應(yīng)一個(gè)存儲(chǔ)單元,它可以存儲(chǔ)int類(lèi)型的數(shù)據(jù),這個(gè)單元的地址存儲(chǔ)在B中,此時(shí),B是int*數(shù)據(jù)。因此,您可以執(zhí)行以下操作
a=*b
但是反向操作是錯(cuò)誤的
b=a
您需要使用int類(lèi)型的變量來(lái)給出int*[b=&a
在這種情況下,帶有指針類(lèi)型的形式參數(shù)的函數(shù)調(diào)用方法會(huì)很清楚。
理解時(shí)要注意兩點(diǎn)*
1。當(dāng)它出現(xiàn)在變量定義語(yǔ)句中時(shí),與數(shù)據(jù)類(lèi)型結(jié)合起來(lái)表示相應(yīng)數(shù)據(jù)類(lèi)型的指針
要定義一個(gè)函數(shù)fun,該函數(shù)帶一個(gè)整型參數(shù)并返回整型指針,其定義語(yǔ)句為什么?
您定義的函數(shù)類(lèi)型由您決定。
也就是說(shuō),您的函數(shù)是什么類(lèi)型的,返回值是什么類(lèi)型的。
例如:
函數(shù)定義int fun(int a,char b)
返回值為整數(shù)
函數(shù)定義int*fun(int a)
返回值為基類(lèi)型為整數(shù)的指針
函數(shù)定義void fun(int a)
無(wú)返回值