請教pa與pa,請教pa與pa0區別

2021-03-04 02:23:34 字數 4961 閱讀 2089

1樓:手機使用者

p=a中的a如果是一個陣列的話,a是一個首地址, p=&a[0] 同樣是陣列a的首地址。 也就是說a與&a[0]的地址是相同的, 檢視原帖》

*p=&a[0] 和p=&a[0]有什麼區別

2樓:匿名使用者

舉個例子吧:

a是一個陣列,它在記憶體中的初始地址比如說是0x11111111(簡單假設),且a[0]的值是1,也就是說,記憶體0x11111111中儲存的值是1。

於是,&a[0]=0x11111111,a[0]=1。

int *p;

p=&a[0];

指標p會有一個自己的記憶體地址,通常佔用4個位元組(比如初始地址是0x22222222)。p的值是&a[0],也就是說從0x22222222開始,後面4個位元組中儲存的值是0x11111111。

*p的值就等於p所指向的記憶體地址中儲存的值,也就是a[0]。所以*p等於1。

如果*p=&a[0]的話,很容易出問題。比如說int *p之後,p的初始值可能是0xcccccccc(debug版本)或者0x00000000(release版本)。這個時候,如果你寫一句*p=&a[0]的話,將會把0xcccccccc或者0x00000000記憶體之後4個位元組的值變為0x11111111。

而0xcccccccc和0x00000000記憶體區通常是不可寫的,這樣就會報錯。

3樓:匿名使用者

*p=a[0] //將 a[0]的值賦給到p所指向的位置。

p=&a[0] //將 a[0]的地址賦給p則,如果:

int a[10];

int *p;

*p=a[0]; //1

p=&a[0]; //2

2句恆正確,1句則有可能引發記憶體非法訪問錯誤。

c語言中*p=a[0]與p=a[0]有什麼區別?

4樓:匿名使用者

對於指標來說,

*p = a[0],表示向地址為p的記憶體區域賦值為a[0]。

p = a[0],把變數p的值改為a[0],這個語句正常應用中是錯誤的。變數p的值為記憶體地址,這樣賦值會丟掉p原來指向的記憶體。

正確給記憶體地址賦值應該使用第一句。

5樓:匿名使用者

這個是指標和變數的區別:

第一個表示變數p存的是陣列a的地址值,即表示指向陣列a

第二個表示p和陣列a的第一個元素的值一樣。

6樓:

有啊,*p是個指標,他儲存的是一個變數的地址。你把a[0]裡的資料賦給他,是儲存在那個變數中,不是在存*p中。另一個p是個變數,a[0]中的資料時存在p中

例如:int *p;

p=&b;

*p=a[0];

b==a[0] 值是放在b中

另一個是放在p中 ,不同的

7樓:

都是賦值語句,p的資料型別不同,被賦值的對像不同而已

*p=a[0] ==>賦值對像不是變數p本身,而是它所指向的對像

p=a[0] ==>賦值的對像就是變數p本身

p=&a[0][0]是什麼意思??

8樓:馬拉古城

這是指標中的內容,p是一個指標,用來儲存地址,p=&a[0][0];的意思就是將a [0][0]的地址的值給p,也就是說p指向a[0][0]。

9樓:匿名使用者

p是int型指標。p=&a[0][0]意思為將a[0][0]的地址賦值給p。

c語言中p=&a和p->a的區別,不是都表示指標p指向a嗎

10樓:匿名使用者

->只有在出現類的環境中才可用到,而&則隨時可用。

舉個例子有個類(或結構)x當中有整形成員a:

class x

;這時我們宣告該類的一個物件a,並用你提到的第一句話來將a的地址賦值給指標p:

x a;

x* p = &a;

再寫語句如果需要呼叫p指向的地址中的變數,也就是物件a,那麼用如下表示式:

*p如果要訪問a中的成員a,那麼用如下表示式:

a.a如果想利用指標p來實現上述目的,那麼用如下表示式:

(*p).a

c++的編寫者將上述表示式簡單寫為:

p->a

11樓:匿名使用者

->指標操作符的優先順序非常高,。p->a是取得p指向結構體的成員a,等價於(*p).a

p=&a表示p是一個指標,&a的地址賦予pstruct data

; /*定義結構體*/struct data * p;/*定義結構體指標*/struct data a = ;/*宣告變數a*/int x;/*宣告一個變數x*/

p = &a ; /*讓p指向a*/

x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的資料項a賦值給x*/

/*由於此時p指向a,因而 p->a == a.a,也就是1*/

12樓:丿北城丨涼築

a和p是變數,&a和*p是表示式,1和0x1000是常量a和*p表示的都是整形左值,p和&a表示的都是指標型左值,1和0x1000表示整形和指標型右值。(左右值的概念不清的話,google一下)

在記憶體中,a和p有儲存空間空間,a存放著1,p存放著0x1000,*p和&a沒有空間,他們的運算結果是在暫存器中存放的,1和0x1000也有空間,在程式的常量段存放。

*p按照stanley lippman的著作《c++ primer》中的描述,p是指標變數,*是解引用操作符,*p是一個表示式,含義是「對指標變數p進行解引用操作」,這與表示式&a的含義「取整形變數a的地址」是正好是相反的操作。

13樓:阿凡達

p=&a 是對a的引用。p->a是指標p下的內容。對a的引用是對a起別名,對p進行操作就是對a的操作。

p->a的話,就是指標p指向的儲存單元的a。這個你對p操作的話就不會改變a。和前一個是不一樣的!

14樓:匿名使用者

在用的時候完全可以混用

這是在搞笑嗎

15樓:季成佟橋

你說的復*(p++)h和*p++是等價的

但是這裡制的++是先用在加所以結果都是10要是程式是這樣的

#include

void

main()

,*p;

p=a;

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

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

p=a;

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

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

}結果就會變成11了

希望採納

p是指標變數,*p=a和p=&a的區別

16樓:

1*p=a; //表示將a的值賦給p所指單元。

p=&a; //表示將p指向a單元,即將a單元的地址賦給p。

2int a,b;

int *pa,*pb;

a=10;b=20;

*pa=a;*pb=b; //這兩個語句有問題。pa,pb是野指標,沒有指向任何單元。

printf("%d,%d\n",*pa,*pb);

printf("%x,%x\n",pa,pb); //pa,pb的野指標,其值不確定。

printf("%x,%x\n",&a,&b); //輸出a,b的地址。

17樓:金色潛鳥

分清是語句裡還是宣告裡。

宣告 裡 int *p=a; 宣告 *p 是 int 型指標,初始化,讓 p 指向 a [陣列] 的始地址。

宣告 裡 int p=&a; 宣告 p 是 int型變數,不是指標,初始化,把變數 a 的地址 &a 賦給 p.

語句裡,若 p 是指標變數,

*p=a; *p 表示 值,把 變數 a 的當前值 賦給 指標。(指標指向的地址不變)。

p = &a; p 表示指向的地址, 把 變數 a 的地址 &a 賦給 p, 也就是讓指標指向 變數 a。

例如:int a=2, b=3;

int *p=&b; // 指標指向地址 初始化, 指向 b

printf("address: %p value:%d\n", p, *p); //輸出地址同 b, 數值 3

*p=a;

printf("address: %p value:%d\n", p, *p); //輸出地址同 b, 數值 2

p= &a;

printf("address: %p value:%d\n", p, *p); //輸出地址同 a, 數值 2

---------------------

18樓:匿名使用者

這段**在一些編譯器是編譯不過的,因為你沒有給pa,pb賦值,pa,pb兩個指標指向**,根本不知道

*p=a 和 p=&a是完全不同的兩碼事

*p 是 p 指向的地址的值,改變了值不是改變了它的地址,而p=&a就是改變p所指向的地址,使之指向a

舉個例子說明一下

p=&a; //p儲存的是a的地址

*p=b; //並不是p儲存了b的地址,而是將b的值儲存到p所指向的地址的那個值,這句相當於a=b,最後改變了a的值,而非p所指向的地址

19樓:匿名使用者

最關鍵的錯誤在pa和pb這兩個指標沒有初始化,

當執行*pa=a;*pb=b;時結果不可預期, 很可能程式應崩潰掉的.

20樓:匿名使用者

區別很明顯,*pa=a,*pb=b只是說記憶體pa位置存放的值是等於a並不是pa指向變數a的地址單元,因此輸出的地址是不一樣的。

c裡面pa和pa有什麼區別

當然有區別。一般情況下,p a說明p是二級指標,而p a說明p是一級指標。c 請問 p a與p a p是指標 有什麼區別 p a容易理解,就是把變數a的地址存在指標p。p a是把變數a的地址存放在指標p所指向的記憶體單元 打個比方 int a 1000 int p 假設a存放於記憶體中的22222這...

kpa與pa換算,kpa與kn的換算

1kpa 1000pa 700kpa 700000pa mpa kpa pa之間是怎樣換算的?問題 mpa kpa pa之間是怎樣換算的?主回答1 1mpa 1000kpa 1000000pa 正確!2 106pa 1mpa 應為 10的六次方 pa 1mpa 6應在右上角,有專時打不屬出來,也可以...

pa表示的是什麼?pa值是什麼意思

pa,是一個網路流行語。是在美國學生中間很流行的一個詞語。指那些喜歡參加各種party,通宵玩樂的人。pa是壓強意思。壓強是指物體所受壓力的大小與受力面積之比。pa值是一種標示防曬品對紫外線a光防禦能力的標準 酒店pa一般特指酒店公共區域保潔員,負責酒店的衛生保潔管理。pa一般指壓強。物體所受壓力的...