區(qū)別是:1、*p表示此指針指向的內(nèi)存地址中存放的內(nèi)容,p表示一個(gè)指針變量的名字;2、*p一般是一個(gè)和指針類(lèi)型一致的變量或者常量,p輸出的是一個(gè)16進(jìn)制數(shù);3、*p是讓程序去那個(gè)地址取出數(shù)據(jù),p存放的是地址。
本教程操作環(huán)境:windows7系統(tǒng)、C++17版本、Dell G3電腦。
C語(yǔ)言中,*p 和p都常用在指針當(dāng)中表示一個(gè)指針變量,*p 和p的區(qū)別:
1、表示的含義不同
*p表示此指針指向的內(nèi)存地址中存放的內(nèi)容。
p表示一個(gè)指針變量的名字,指此指針變量所指向的內(nèi)存地址。
2、輸出的格式不同
*p一般是一個(gè)和指針類(lèi)型一致的變量或者常量。
p輸出的是一個(gè)16進(jìn)制數(shù), 輸出一個(gè)指針的地址。
3、功能不同
*p是讓程序去那個(gè)地址取出數(shù)據(jù)。
p存放的是地址。
例子:
1、
int a[5]={1,2,3,4,5}; int *p=a;//這是在定義指針變量p的同時(shí)就直接給它初始化,即把數(shù)組a的首地址賦給它。
2、
int a[5]={1,2,3,4,5}; int *p;//聲明指針變量p p = a;
擴(kuò)展資料
(*p)操作是這樣一種運(yùn)算,返回p 的值作為地址的那個(gè)空間的取值。(&p)則是這樣一種運(yùn)算,返回當(dāng)時(shí)聲明p 時(shí)開(kāi)辟的地址??梢杂觅x值語(yǔ)句對(duì)內(nèi)存地址賦值。
例:
int *p; p=2003H; *p=3000H
結(jié)果:
**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。 &&p=&(&(p))=&(3001H),此時(shí)出錯(cuò)了,3001H 是個(gè)常數(shù)無(wú)法存放地址。 *&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。
推薦教程:《C#》