當前位置:首頁 » 編程語言 » p與p在c語言中有什麼區別
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

p與p在c語言中有什麼區別

發布時間: 2023-05-20 13:51:10

1. c語言中p*是什麼意思,他和*p的區別是什麼

p*
如是出現在算術表達式中,這個星號就是乘號,表示相乘,如果是出現在聲明中(如變數定義),那就表明p是一種數據類型,p*表示要聲明這種類型的指針變數。

*p
依然可以表示相乘的運算,也可表示提取p指針指向的位置保存的值。例如:

int a=9;
int *p=a;

printf("%d",*p);
這個printf()調用中的*p表示提取p指針指向的地址(即變數a的地址)保存的值(即變數a的值)

2. c語言的指針部分*p與p的區別是什麼

p是指針變數,其值是一個變數的地址。p收到了哪個變數的地址,就指向哪個變數。該變數成為猛弊p的對象。

*p是p所指向的對象的值。

例如:inti=3,*p;

p=&i;注意:p收到i的地卜知租址,故p指向i,i是p的對象。

printf("%d,%d ",i,*p);輸出:3,3注意:*p是p所型兆指向的對象的值,即i的值。

3. C語言中*p,p,&p的區別

*p是一個變數,是一個變數。
p是一個地址一個內存地址,不是一個變數。
int *p; printf("%p",p);
會列印出一個16位地址
&p中&是求地址符,例如&a是求a的地址,&b是b的地址

上面說過執行 int *p 之後,p是一個地址但也是一個變數。
&p是一個地址,順著這個地址能找到一個值,這個值是p,然後p也是一個地址,順著這個地址能找到另外一個值 p
p不再是一個地址,是一個變數就跟 int a=1,b=2; 里一樣。
通俗一點解釋找一本《C語言程序設計》的書,圖書館有一本《索引大全》的書,裡面記錄著館內所有書的位置
通過 《索引大全》 —— 《C語言程序設計》的位置 —— 《C語言程序設計》
上面三個東西分別是&p,p,&*p

4. C語言中*p和**p有何區別

一、表示的東西不同

*p表示p代表相應數據類型在存儲單元中存儲的首地址,而這個存儲單元存儲的是相應類型數據的數值。

**p表示p也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值。

二、基類型不同

例如int *p1,**p2;

兩者本質上都是指針,但是兩者的基類型不同。p1的基類型是int,換句話說p1指針指向的是int型的數據,而p2的基類型是int *換句話說p2指向的是指向int型數據的指針,即指向指針的指針。

三、用法不同

例如int *p;

那麼p就是指向int類型變數的一個指針。(即數組)

如果int**p;

那麼p就是指向int*類型指針的一個指針。(即指向一維數組的指針,即二維數組)

5. C語言中,p,&p,*p有什麼關系

假設我們定義一個指針p。
那麼會經常使用到三個符號:
1,p;
2,*p;
3,&p;
初學者經常會感到很迷茫,到底這三個符號表示什麼?
我們知道,p是一個指針變數的名字,表示此指針變數指向的內存地址,如果使用%p來輸出的話,它將是一個16進制數。而*p表示此指針指向的內存地址中存放的內容,一般是一個和指針類型一致的變數或者常量。
而我們知道,&是取地址運算符,&p就是取指針p的地址。等會,怎麼又來了個地址,它到底和p有什麼區別?
區別在於,指針p同時也是個變數,既然是變數,編譯器肯定要為其分配內存地址,就像程序中定義了一個int型的變數i,編譯器要為其分配一塊內存空間一樣。而&p就表示編譯器為變數p分配的內存地址,而因為p是一個指針變數,這種特殊的身份註定了它要指向另外一個內存地址,程序員按照程序的需要讓它指向一個內存地址,這個它指向的內存地址就用p表示。而且,p指向的地址中的內容就用*p表示。
我來舉個例子說明這三個符號到底表示什麼。
假設有一個樓盤的銷售員,當然,現在時髦的叫法是「銷售代表」之類的,我們用字母x表示他。他負責銷售一個樓盤中的某套房子,此房子有一個地址為A,而他本身也需要有地方住,他居住的房子的地址為B。而這個幸運的銷售員很快的賣掉了這套房子給C。現在公司要求對銷售的房子必須包產到戶,也就是說,現在必須提到x的時候能夠管理到C。
如果用程序表示上述內容的話就可以使用指針。首先定義一個指針p,讓他指向地址A,地址A中住的是C,而x本來居住的地方的地址是B。OK,現在能知道p,*p,&p表示什麼了嗎?沒錯,p表示此指針指向的地址,就是A,而*p表示此地址中居住的人,就是C,而&p表示這個銷售員居住的地址,就是B。

6. C語言p和p的區別

先要理解地址和數據,可以想像有很多盒子,每個盒子有對應的號碼,那個號碼叫做「地址」,而盒子游型叢里放的東西叫做「數據」。上面就段理解了,*p和p的區別就不難解釋了。p是指針變數,用來存放租物地址,可以認為是上面所說的盒子的號碼,「*」是解引用操作符,可以把它理解成打開盒子,*p就是打神櫻開p號盒子,取出裡面的數據。簡單來說,p存放的是地址,而*p是讓程序去那個地址取出數據。

7. C語言 *p 和p的區別

C語言中,*p 和p都常用在指針當中表示一個指針變數,*p 和p的區別:

1、表示的含義不同

*p表示此指針改則指向的內存核散棚地址中存放的內容。

p表示一個指針變數的名字,指此指針變數所指向的內存地址。

2、輸出的格式不同

*p一般是一個和指針類型一致的變數或者常量。

p輸出的是一個16進制數,輸出一個指針的地址。

3、功能不同

*p是讓程序去那個地址取出數據。

p存放的是地址。

例子:

1、int a[5]={1,2,3,4,5};

int *p=a;//這是在定義指針變數p的同時就直接給它初始化,即把數組a的首地址賦給它。

2、int a[5]={1,2,3,4,5};

int *p;//聲明指針變數p

p = a;

(7)p與p在c語言中有什麼區別擴展閱讀

(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時聲明p 時開辟的地址。可以用賦值語句對內存地址賦值。

例:

int *p;

p=2003H;

*p=3000H

結果:

**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。

&&p=&(&(p))=&(3001H),此時出錯了,3001H 是個常數無法存放地址。

*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。

8. C語言中,*p和p有什麼區別

如果p為普通指針變數,那麼:
p代表內存中的某存儲單元的地址,而*p代表該存儲單元中的存儲的內容。

9. C語言 *p 和p的區別

C語言中,*p 和p都常用在指針當中表示一個指針變數,*p 和p的區別:

1、表示的含義不同

*p表示此指針指向的內存地址中存放的內容。

p表示一個指針變數的名字,指此指針變數所指向的內存地址。

2、輸出的格式不同

*p一般是一個和指針類型一致的變數或者常量。

p輸出的是一個16進制數,輸出一個指針的地址。

3、功能不同

*p是讓程序去那個地址取出數據。

p存放的是地址。

例子:

1、int a[5]={1,2,3,4,5};

int *p=a;//這是在定義指針變數p的同時就直接給它初始化,即把數組a的首地址賦給它。

2、int a[5]={1,2,3,4,5};

int *p;//聲明指針變數p

p = a;

(9)p與p在c語言中有什麼區別擴展閱讀

(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時聲明p 時開辟的地址。可以用賦值語句對內存地址賦值。

例:

int *p;

p=2003H;

*p=3000H

結果:

**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。

&&p=&(&(p))=&(3001H),此時出錯了,3001H 是個常數無法存放地址。

*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。