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