解釋下指標p pp的關係

2021-03-27 07:39:31 字數 3209 閱讀 8335

1樓:萬能導師

使用*定義指標,例如char*p;

p是一個字元的指標;

如果在定義時沒有使用100*,那麼取指標指向的記憶體的值;

例如:inta[]=,3,5,7,9{1},*p;

p=一個;

所以乘以p等於1;

& and是地址操作符,例如,& and是變數p的地址;

比如:# include < stdio . h >

main()

{int[]={1,2,3,4,5},*p=;

printf("%d\n」*p);

printf("%d\n,p);

printf("%d\n」);

printf("%d\n」代替);

擴充套件資料:

指標變數可以加或減,比如p++、p+i、p-=i。指標變數的加和減不是簡單地加或減一個整數,而是取決於指標指向的資料型別。

當給一個指標變數賦值時,要把一段資料的地址賦給它,而不是直接賦給一個整數,比如int*p=1000;這是毫無意義的,通常會導致程式在使用過程中崩潰。

確保在使用指標變數之前初始化它,否則您將無法確定指標指向的位置,如果指標指向的記憶體不允許,程式將崩潰。對於當前度不指向的指標,建議使用null。

可以減去兩個指標變數。如果兩個指標變數指向同一個陣列中的一個元素,那麼減法的結果就是兩個指標之間不同元素的個數。

陣列也是有型別的,陣列的名稱表示一組相同型別的資料。當您定義一個陣列,或者與sizeof, &操作符一起使用它時,陣列名稱表示整個陣列,並且表示式中的陣列名稱被轉換為指向陣列的指標。

2樓:冷123波

定義指標時用*,如char *p;

那麼p就是一個指向字元型的指標;

如果*不在定義時用,那就取指標所指向記憶體的值,如int a=,*p;

p=a;

那麼*p就是1;

&是取地址運算子,如&p就是取變數p的地址;

下面這個例子:

#include

main()

,*p=a;

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

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

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

printf("%d\n",&p);

}輸出結果為:

11245036(各人的電腦可能不相同)

1245036(各人的電腦可能不相同)

1245032(各人的電腦可能不相同)

從結果可以看出,

*p為所指向的地址的值

p為所指向的地址,即a的地址

&p為指標變數p的地址

c語言中,p為指標,那麼*p和&p是一樣的嗎,什麼區別

3樓:匿名使用者

上面是我自己做的原理圖,深入到記憶體中,你就懂了.不懂隨時call

4樓:匿名使用者

樓主發現這兩個的區別了嗎?

*p &p

他們的區別無非就是p前面帶的符號

,如果樓主知道該符號的含義就不會提這個問題了;

* 取值運算子?

& 取地址運算子?

* 和 & 互為反運算子;

樓主還有疑問嗎?

加油!!

5樓:xiao蝌蚪找媽媽

在宣告指標變數的時候,*p表示宣告p是指標變數,比如int *p(宣告p為int型指標變數);在呼叫指標變數的時候,*p表示指標變數p所指向的變數的值,比如int a=5,b; int *p;(宣告p為int型指標變數),p=a; b=*p;(把p所指向的變數的值,即a的值賦給變數b)。對於&p,則是代表變數p的地址,顯然和以上*p的兩種意思都不一樣

6樓:

*p 是取p的內容

&p 是取p的地址

7樓:使用者名稱都是渣渣

*p是p指向的內容,&p是儲存p指標的記憶體地址

c語言中,p為指標,那麼*p和&p是一樣的嗎,有什麼區別呢?

c語言指標,int a=1; int *p; 其中p=&a和*p=&a有什麼區別?p的值是否相同?

8樓:匿名使用者

指標本質就是儲存記憶體地址的一個變數。所以指標可以指向某個變數在記憶體中儲存的單元格嘛。變數去訪問單元格最後也是編譯器通過變數名和地址一一對應去查詢的。

而指標裡面直接儲存的就是地址,所以直接可以訪問地址所對應的單元格。

不知道樓主說的是說明情況。所以幾種可能的都說一下:

測試**

#include "stdio.h"

#include "conio.h"

main()

int *p=&a ; 這是很標準的,把a的地址個p指標變數。

int *q;q=&a;這也是很標準的。定義一個指標變數,然後將a的地址賦值給她。

int *r; *r=&a; 首先r是個指標變數,但是r指向記憶體中那個單元格呢?r沒有賦初值就開始用了。這是很嚴重的。

r是個遊離態的指標。 *r表示取出r對應的那個地址中的值。r都沒有指向一個具體的單元格,如何去取值啊。

9樓:冰水清清藍

int *p中其一般形式為:

型別說明符 *變數名;

其中,*表示這是一個指標變數,變數名即為定義的指標變數名,型別說明符表示本指標變數所指向的變數的資料型別。

例如: int *p1;

表示p1是一個指標變數,它的值是某個整型變數的地址。或者說p1指向一個整型變數。至於p1究竟指向哪一個整型變數,應由向p1賦予的地址來決定。

p就是地址。*p是一個指標型變數 *p=&a錯誤

10樓:匿名使用者

p=&a 是將變數a的地址賦給指標p本身的儲存單元

*p=&a 是將a的地址賦給指標p所指向的記憶體單元

第二種由於沒有對指標初始化,*p不知道指向什麼單元(有可能是重要的系統單元),所以這樣的操作很危險。

11樓:十面埋伏炸

不相同,p是指該指標的地址,向它賦值是將p指向另一個地址,而*p是指向p地址的指標,它是可以直接賦值的。希望可以幫助你~~~

12樓:好好學技術

p=&a,表示p指向a ,所以p的值為1

*p=&a,是把a的地址的值給*p,p值是不同的

關於C語言指標的問題如圖,求解釋

這樣 bai理解不 int sss char s,char t 終止時 1 s 指向結尾,t 沒有到結尾,返回 s t 為正數 終止時 2 s 指向結尾,t 指向結尾,返回 s t 為 0 終止時 3 s 沒有到結尾,t 指向結尾,返回 s t 為負數 return s t 因為有一個等於的符號 所...

陣列與指標的問題,如下程式,求解釋

p是一個動態變動的指標,而str是陣列的起始地址str 7是 e 的地址而不是字元 而 p就是指p指向的字元 p 2是指每次移動兩位但是不超過第七個 p 首先,對於陣列名的理解,你出了問題,str是一個字元型指標的常量,str 7也就是橫跨了7個單元格,表示的是 e 的地址,其次,對於指標的大小判斷...

關係的引證解釋

1.關聯 牽涉。宣和遺事 前集 這箇陰陽,都關係著皇帝一人心術之邪正是也。62616964757a686964616fe58685e5aeb931333361303030 宋 羅大經 鶴林玉露 卷二 某縣有母訴其子者,此關係風教,不可不施行。明 唐順之 與洪方洲郎中書 之二 文章之說,其明不明,無足...