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一般指壓強。物體所受壓力的...