指針和數(shù)組的關(guān)系 數(shù)組名和指針的區(qū)別?
數(shù)組名和指針的區(qū)別?數(shù)組和指針之間的區(qū)別:數(shù)組名稱確實表示指向數(shù)組第一個地址的指針,但是這個指針非常特殊。它的值(指針的值指指針的地址)不能重寫。可以重寫的只是它所指向的內(nèi)容。換句話說,數(shù)組名只能指向
數(shù)組名和指針的區(qū)別?
數(shù)組和指針之間的區(qū)別:數(shù)組名稱確實表示指向數(shù)組第一個地址的指針,但是這個指針非常特殊。它的值(指針的值指指針的地址)不能重寫??梢灾貙懙闹皇撬赶虻膬?nèi)容。換句話說,數(shù)組名只能指向數(shù)組的第一個地址。如果存在數(shù)組char a[],則如果出現(xiàn)a=a,則這是一個編譯錯誤。對于普通指針,這是可能的。例如,如果有一個數(shù)組char a,那么定義char*P=a然后P=p1是合法的,這意味著指針P指向&A[1]。它們之間的第二個區(qū)別是,每當(dāng)使用數(shù)組名的指針時,系統(tǒng)都會傳入數(shù)組的信息,而普通的指針只是一個4字節(jié)的整數(shù),例如:
char a[5]char*P=a//指針a和指針P都指向數(shù)組a cout<< sizeof(a)< “#”<< sizeof(P)<<此時,運行結(jié)果是“5×4”
指針、數(shù)組名、函數(shù)名都是地址嗎?
是。在C語言中,函數(shù)名也稱為函數(shù)指針,所以C語言中的函數(shù)名就是指針函數(shù)指針”本身首先應(yīng)該是指針變量,但指針變量指向函數(shù)。這就像使用指針變量指向整數(shù)變量、字符類型和數(shù)組一樣。這里是指向函數(shù)。如前所述,C編譯時,每個函數(shù)都有一個入口地址,即函數(shù)指針指向的地址。當(dāng)你有一個指向函數(shù)的指針變量時。使用此指針變量調(diào)用函數(shù)與使用指針變量引用其他類型的變量相同。這些概念基本相同。函數(shù)指針有兩個用途:調(diào)用函數(shù)和作為函數(shù)的參數(shù)。
數(shù)組名可以認(rèn)為是一個存放地址的指針變量名,即數(shù)組其實就是指針嗎,求詳解?
不可以。指針變量不僅可以指向數(shù)組的第一個地址,還可以指向其他數(shù)組。例如,結(jié)構(gòu)的第一個地址、函數(shù)的入口地址等等?;蛘呖梢灾赶驍?shù)組中的元素。數(shù)組名是地址,在某種意義上相當(dāng)于指針。而不是指針變量。指針變量int*P=0P是指針變量。
C語言中,指針和數(shù)組名有什么關(guān)系嗎?
事實上,當(dāng)你問一個問題時,你無意中說了一點不同。就地址而言,兩者沒有區(qū)別。但是,指針可以自由移動,但是數(shù)組名不能。這是因為數(shù)組名是一個命名變量,而變量名本身不能更改。因此,無論何時使用它,它都指向一個固定的地址,指針變量得到地址事實上,這個進(jìn)程是一個匿名引用進(jìn)程,它得到的是地址而不是變量名,既然你不知道它是變量名,你可以隨意更改它。