*p=&a和p=&a 指針參數(shù)與數(shù)組參數(shù)的關(guān)系?
指針參數(shù)與數(shù)組參數(shù)的關(guān)系?在C/C程序中,指針和數(shù)組在許多地方可以相互替換,給人一種等價(jià)的錯(cuò)覺。在靜態(tài)存儲(chǔ)(如全局陣列)或堆棧中創(chuàng)建陣列。數(shù)組的名稱對(duì)應(yīng)于(而不是指向)一個(gè)內(nèi)存塊,并且它的地址和容量在
指針參數(shù)與數(shù)組參數(shù)的關(guān)系?
在C/C程序中,指針和數(shù)組在許多地方可以相互替換,給人一種等價(jià)的錯(cuò)覺。
在靜態(tài)存儲(chǔ)(如全局陣列)或堆棧中創(chuàng)建陣列。數(shù)組的名稱對(duì)應(yīng)于(而不是指向)一個(gè)內(nèi)存塊,并且它的地址和容量在其生存期內(nèi)保持不變。只能更改數(shù)組的內(nèi)容。
指針可以隨時(shí)指向任何類型的內(nèi)存塊,其特點(diǎn)是“可變”,所以我們經(jīng)常使用指針來操作動(dòng)態(tài)內(nèi)存。
當(dāng)數(shù)組作為函數(shù)參數(shù)傳遞時(shí),數(shù)組將自動(dòng)退化為相同類型的指針。
所以:
char a[]=“Hello world”
char*P=a
cout<< sizeof(a)<< endl//12字節(jié)
cout<< sizeof(P)<< endl//4字節(jié)
void func(char a[100])
{
cout<< sizeof(a)<< endl//4字節(jié)而不是100字節(jié)
C語言中,指針和數(shù)組名有什么關(guān)系嗎?
當(dāng)你問問題時(shí),你不經(jīng)意間說了一點(diǎn)不同。就地址而言,兩者沒有區(qū)別。但是,指針可以自由移動(dòng),但數(shù)組名稱不能。這是因?yàn)閿?shù)組名是一個(gè)命名變量,而變量名本身不能更改。因此,無論何時(shí)使用它,它都指向一個(gè)固定地址指針變量獲取地址的過程實(shí)際上是一個(gè)匿名引用過程。它獲取的是地址而不是變量名。因?yàn)槟恢浪亲兞棵?,所以可以隨意更改它。
指針和數(shù)組的區(qū)別?
您好,指針指向一個(gè)內(nèi)存,其中包含內(nèi)存的地址。數(shù)組也是一個(gè)指針,但是當(dāng)它在開始時(shí)被定義時(shí),它指向一個(gè)空內(nèi)存(由系統(tǒng)給出,您可以安全地使用它),并且它是一個(gè)*const常量指針(請(qǐng)注意,它不是指向常量的指針)。只要聲明了這個(gè)指針,它就不能再指向其他內(nèi)存。此外,數(shù)組和指針都可以用括號(hào)運(yùn)算符進(jìn)行偏移??偠灾羔樅蛿?shù)組的本質(zhì)是完全相同的,只是數(shù)組在開始時(shí)得到一塊內(nèi)存