c語言指標p與p有什麼區別?printf輸出表列要哪個

時間 2021-08-11 19:14:19

1樓:金色潛鳥

宣告為指標以後,「語句」裡,出現 *p, 表示 是 數值,出現 p, 表示 是 位址。

列印 數值 5

如果 寫 printf("%d", p); 不帶星號的,則是 a的位址。

2樓:逍遙足球子

p代表指標 32位的數,用來記錄位址的。*p代表取出指標指向位址中的記憶體。

3樓:匿名使用者

我是這樣理解的,指標*p顯示的是記憶體位址,而沒加"*"則表示位址的值

4樓:來自舜皇山喜悅的黑櫻桃

p標識的一段記憶體的位址,*p標識的是這塊記憶體上儲存的值。你要輸出記憶體的位址,就用p,要輸出這塊記憶體儲存的數值,就用*p

5樓:

c語言中指標的出現是方便資料的處理。若宣告乙個指標,int *p,a;

a=5;

p=&a;

此時p中存放的資料就是a的位址,*p就表示a的值,printf("%d",*p);-->輸出的就是5,即a的值;* 就是取值的意思,本來p表示的是a的位址,*p就是把a的位址的值解析出來。 printf("%p",p); -->輸出的是乙個十六進製制的位址,即是a的位址;

6樓:

p是乙個位址,*p即是p所指向的值

7樓:匿名使用者

乙個是指標,乙個是字元。 用printf列印的話,列印字元用 %c 如果列印指標 用 %p,如果列印指標指向的位置的資料用 printf( "%c",*p)...

8樓:匿名使用者

跟輸出沒有關係,區別的話要看使用的環境,建議你看個c語言的入門書!定義或者申明,還有其它情況下*p與p的意義是不一樣的!

c語言的指標部分*p與p的區別是什麼?

9樓:夏日絕

p是指標變數,其值是乙個變數的位址。p收到了哪個變數的位址,就指向哪個變數。該變數成為p的物件。

*p是p所指向的物件的值。

例如:int i=3,*p;

p=&i; 注意:p收到i的位址,故p指向i,i是p的物件。

printf("%d,%d\n",i,*p); 輸出:3,3 注意:*p是p所指向的物件的值,即i的值。

c語言c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

10樓:酒天縱尤晟

賦值的時候*p表示這是乙個指標,p表示是乙個數

而用的時候如果p是乙個指標,那麼*p表示所指向的內容,p本身存著乙個位址。

11樓:莘赩蔚日

intpp=5;

//開闢4位元組記憶體給pp,其中存放的是5的二進位制值;

int*p=&pp;

//開闢4位元組記憶體給p,其中存放的是pp的位址值(只有定義成int*型別的才能存放位址值);

12樓:墨澄邈馮曼

舉個例子:

inta[5]=;

int*p;

p=&a[2];

++*p;//等同於++a[2],使p指向的值加1++p;//等同於p=a[2+1],使p指向目標陣列中的下乙個元素a[3]

c語言的指標部分 *p與p區別

13樓:楓璽

c語言的指標部分 *p與p區別如下:

1、作用不同

*p表示此指標指向的記憶體位址中存放的內容。

p是乙個指標變數的名字,表示此指標變數指向的記憶體位址。

2、輸出內容的格式不同

*p常用在乙個和指標型別一致的變數或者常量。

p輸出乙個指標的位址,通常是輸出乙個16進製制的數。

3、效果不同

*p是讓編譯器從指定的位址中讀取出資料。

p是用來存放要讀取資料的位址。

擴充套件資料c語言中使用指標的作用:

1、指標使程式的不同部分能夠共享資料

類似於共享記憶體,如果將某乙個資料值的位址從乙個函式傳遞到另外乙個函式,這兩個函式就能使用同一資料。

2、利用指標,能在程式執行過程中預留新的記憶體空間大多數情況下,可以看到程式使用的記憶體是通過顯式宣告分配給變數的記憶體。但是在很多應用場合中,可能程式執行時不清楚到底需要多少記憶體,使用指標可以讓程式在執行時獲得新的記憶體空間,並讓指標指向這一記憶體更為方便。

3、指標可以用來記錄資料項之間的關係

在高階程式設計應用中,指標被廣泛應用於構造單個資料值之間的聯絡。比如,程式設計師通常在第乙個資料的內部表示中包含指向下乙個資料項的指標(實際上就是鍊表了),來說明這兩個資料項之間有概念上的順序關係。

14樓:匿名使用者

p是指標變數,其值是乙個變數的位址。p收到了哪個變數的位址,就指向哪個變數。該變數成為p的物件。

*p是p所指向的物件的值。

例如:int i=3,*p;

p=&i; 注意:p收到i的位址,故p指向i,i是p的物件

printf("%d,%d\n",i,*p); 輸出:3,3 注意:*p是p所指向的物件的值,即i的值。

祝學業進步!

15樓:匿名使用者

我舉個例子吧:

int k = 5;

int *p = &k;

這時*p就表示k的值5,而p表示的就是k的位址

16樓:龍嘯天風

賦值的時候*p表示這是乙個指標,p表示是乙個數

而用的時候如果p是乙個指標,那麼*p表示所指向的內容,p本身存著乙個位址。

17樓:鏡面世界

呃⋯⋯第二個前面無運算子相當於p,有運算子且p是函式名或函式指標時,加括號相當於p,不是則無意義,p是函式名且返回指標且是呼叫時,不加括號是返回的指標的間接引用,第乙個p不是指標的話無意義,如果是指標(什麼指標都行,包括函式指標等不常用的,但不能是野指標,執行時會報錯),如果這個表示式前面是運算符號,相當於p,如果前面是另乙個表示式,是*p與那個表示式位與,p是函式指標時加括號相當於p,p是函式指標或函式的二級指標且該函式返回引用時是返回的引用的記憶體位址。(呼!累死我了,給個滿意啊!

看不懂的話等我有時間弄個**)

18樓:匿名使用者

int pp=5; //開闢4位元組記憶體給pp,其中存放的是5的二進位制值;

int *p=&pp; //開闢4位元組記憶體給p,其中存放的是pp的位址值(只有定義成int *型別的才能存放位址值);

19樓:言玉甚人

p中放的是位址

int a=321;

int *p=a;

其實a是乙個位址的別名,這樣方便人們識別;

p也是乙個位址,並且儲存空間中的這個位址中放的是變數a即321這個數在儲存器中的位址,而「*」的作用就是將p這個位址中存放的數所代表的位址中所存放的資料。

20樓:顛兒父

int a = 1; // 記憶體中a有乙個位址比如:

0x11 中存的值是 1

int *p = &a; // 記憶體中p有乙個位址比如:0x22 中存的值是 0x11

p的值是0x11, *p的值是1

21樓:匿名使用者

*p是指標,裡面存的是裡面存的位址的數,p存的是位址

c語言 *p 和p的區別?

22樓:楓璽

c語言中,*p 和p都常用在指標當中表示乙個指標變數,*p 和p的區別:

1、表示的含義不同

*p表示此指標指向的記憶體位址中存放的內容。

p表示乙個指標變數的名字,指此指標變數所指向的記憶體位址。

2、輸出的格式不同

*p一般是乙個和指標型別一致的變數或者常量。

p輸出的是乙個16進製制數, 輸出乙個指標的位址。

3、功能不同

*p是讓程式去那個位址取出資料。

p存放的是位址。

例子:1、int a[5]=;

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

2、int a[5]=;

int *p;//宣告指標變數p

p = a;

擴充套件資料

(*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。

23樓:ieio啊

兩者之間的區別如下:

1、表示的意義不同。

p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,而*p表示此指標指向的記憶體位址中存放的內容。

2、數量形式不同。

p如果使用%p來輸出的話,它將是乙個16進製制數。*p一般是乙個和指標型別一致的變數或者常量。

3、定義不同。

p存放的是位址,而*p是讓程式去那個位址取出資料。

例子:#include

void main()

輸出結果為:3,3,4;

解釋:*p++:是先取出*p的值,再使p加1

//p是個指標,給p加1,相當於讓p指向了x所在位址的下乙個位置,而對於x則是沒有任何影響

(*p)++:是使*p的值加1.

//*p則是p指向的位置對應的值,題目中是*q,所以此時的*q就是x的值,為3,當輸出*q之後,再給*q即x自加1,綜上所述,x就會變為4

24樓:匿名使用者

先要理解位址和資料,你可以想象有很多盒子,每個盒子有對應的號碼,那個號碼叫做「位址」,而盒子裡放的東西叫做「資料」。

上面就段理解了,*p和p的區別就不難解釋了。

p是指標變數,用來存放位址,你可以認為是上面所說的盒子的號碼,「*」是解引用操作符,你可以把它理解成開啟盒子,*p就是開啟p號盒子,取出裡面的資料。

簡單來說,你記住,p存放的是位址,而*p是讓程式去那個位址取出資料。

25樓:雲南新華電腦學校

一、表示的東西不同

*p表示p代表相應資料型別在儲存

單元中儲存的首位址,而這個儲存單元儲存的是相應型別資料的數值。

**p表示p也表示位址,簡單的說,這個位址對應的儲存單元儲存的數也是乙個位址,而不是數值,而這個被儲存的位址對應的儲存單元儲存的資料才是真正的相應型別的數值。

26樓:匿名使用者

借用一樓的回答,列印的時候,你可以參照下述列印,可能你就明白了。

int x = 3;

int *p, *q;

p = &x, q = &x;

printf("p=%p,p=%d\n", p, *p);

printf("%d\n", *p++);

printf("p=%p,p=%d\n", p, *p);

printf("-----\n");

printf("%d\n", (*q)++);

printf("%d\n", x);

你列印的結果應該是:

p=某位址,p=3

q=3p=某位址+4/8(根據系統位數是4或者8),p=隨機值-----

q=3q=4

c語言中p和p1有什麼區別,C語言中p 和p 1有什麼區別?

第一句應該是p p 1吧。這2句的結果是一樣的,相信樓主也是知道的,都表示p 1然後結果儲存在p中。但是所有的研發還是實驗,如果碰到自加1的運算都會選擇p 這裡面的關鍵點是p 的運算速度比p p 1快,雖然一條語句說快能塊多少呢?但是運算步驟少,不僅僅是提高速度,而且可以減少出錯的機率,這對於工程來...

C 中,使用指標p和使用p有什麼區別

估計是 head被翻譯成引用了,如果是 head,則傳進來的是一個值,在外部的那個變數的值沒被更改,所以沒出正確結果.如果是引用的話,外部的那個變數的值就會被改變.你試試看. 首先指出你理解的一個錯誤,p和 p應該都是代表同一個記憶體儲存單元的地址 這句話沒錯,但是它是有條件的,是在對變數的引用中才...

c語言指標p中p 什麼意思

次略太叔嘉惠 若p和q是申明為型別相容的指標變數,且都正確賦有合法值且不為null,那麼,p q是把指標q指向的目標值賦給指標p指向的目標 p q則是使指標p指向指標q指向的目標 最終是p和q指向了同一目標,這個目標就是q指向的目標 在q null時,p q非法操作,p q是合法操作 使p和q同為n...