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